IIS 7+ 命令行管理工具,批量管理站点、应用池和配置。
appcmd.exe 位于 %windir%\system32\inetsrv\,可列出、创建、修改、删除站点、应用、应用池和配置节。它直接读写 applicationHost.config,适合脚本化和批量运维。
前提是安装“Web 服务器 (IIS)”角色,并以管理员身份运行;IIS Express 不使用完整 IIS 配置,不能用它管理。修改配置前应先用 appcmd add backup 生成配置备份,删除站点前要确认物理目录和绑定关系。
Windows Server 2016+(IIS 10)命令基本一致。PowerShell 的 WebAdministration 模块提供 Get-IISSite、New-WebAppPool 等对象化 cmdlet,复杂逻辑更易读;appcmd 在 CMD 脚本中仍很高效。
# 列出所有站点及状态、绑定
C:\> %windir%\system32\inetsrv\appcmd.exe list sites
# 列出应用池及运行状态
C:\> %windir%\system32\inetsrv\appcmd.exe list apppool
# 列出正在运行的工作进程,确认请求落到哪个 w3wp
C:\> %windir%\system32\inetsrv\appcmd.exe list wp
# 影响范围:回收指定应用池,池内应用短暂中断,其他池不受影响
# 备份/回滚:配置不变,无需回滚;异常时再次 recycle 或检查应用日志
C:\> %windir%\system32\inetsrv\appcmd.exe recycle apppool "DefaultAppPool"
# 影响范围:写入站点配置并立即生效,绑定冲突会导致启动失败
# 备份/回滚:先 appcmd add backup;回滚用 restore backup 或删除该站点
C:\> %windir%\system32\inetsrv\appcmd.exe add site /name:"Portal" /bindings:"http/*:8080:" /physicalPath:"D:\Sites\Portal"
# 影响范围:删除站点配置后站点立即下线,但不会删除物理文件
# 备份/回滚:先 appcmd add backup "before-delete";回滚用 restore backup 恢复配置
C:\> %windir%\system32\inetsrv\appcmd.exe delete site "Portal"
# 修改前备份 applicationHost.config
C:\> %windir%\system32\inetsrv\appcmd.exe add backup "before-portal-change"
inetsrv 不在 PATH 中 → 使用完整路径,或在脚本里先 set PATH=%PATH%;%windir%\system32\inetsrv。physicalPath 不存在、权限不足或默认文档缺失 → 检查目录 ACL 与站点物理路径。appcmd list sites 检查绑定,必要时改用不同端口或主机头。delete site 只删配置,不删磁盘内容 → 需要清理目录时另行确认并备份。restore backup 后配置回退但服务异常 → 恢复会重载配置,应用池可能重启 → 在变更窗口执行,并验证站点与绑定。sc — 检查 W3SVC 与应用池依赖服务netstat — 验证站点监听端口tasklist — 查看 w3wp 进程与 PIDicacls — 修复站点目录权限appcmd 依赖什么角色,为什么必须用完整路径?delete site 会删除站点文件吗?inetsrv 默认不在 PATH,需用完整路径或手动加入。appcmd add backup "名称",回滚用 appcmd restore backup "名称"。delete site 只从 IIS 配置中移除站点,站点会立即下线,但磁盘上的物理目录和文件仍保留。需要清理目录时另行确认并备份,回滚可先用 appcmd add backup 生成的备份恢复配置。
小程序版
微信扫码,随时查命令