系统学习 Windows 学习路径:从 CMD 到 PowerShell、系统网络,再到 WSL 与 Server

appcmd

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"

易错点与排错

相关命令

参考链接

读完自测

  1. appcmd 依赖什么角色,为什么必须用完整路径?
  2. 修改配置前应如何备份和回滚?
  3. delete site 会删除站点文件吗?
答案
  1. 依赖“Web 服务器 (IIS)”角色;inetsrv 默认不在 PATH,需用完整路径或手动加入。
  2. 先 appcmd add backup "名称",回滚用 appcmd restore backup "名称"。
  3. 不会;delete site 只从 IIS 配置中移除站点,站点会立即下线,但磁盘上的物理目录和文件仍保留。需要清理目录时另行确认并备份,回滚可先用 appcmd add backup 生成的备份恢复配置。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令