Microsoft.IIS.PowerShell.Commands.dll 核心功能与缺失影响
一、程序集定位
该程序集位于 %windir%\System32\inetsrv\,随 IIS 7.0 及以上版本“管理脚本与工具”(Web-Mgmt-Tools / IIS-Management-Scripting-Tools)功能一并安装。它是 WebAdministration 模块的实际宿主程序集,在 PowerShell 与 IIS 配置系统之间承担桥接职责。
二、核心功能
- 驱动 WebAdministration 模块:执行 Import-Module WebAdministration 时,PowerShell 加载该 DLL 并注册其中的 Cmdlet 与 Provider,模块清单仅作声明,实体实现全部来自此程序集。
- 挂载 IIS:\ 配置驱动器:通过实现 PowerShell Provider,将 applicationHost.config、administration.config 及各站点 web.config 映射为可浏览的层次结构,可直接访问 IIS:\Sites、IIS:\AppPools、IIS:\SslBindings、IIS:\Config 等节点。
- 承载 IIS 专用 Cmdlet:站点、应用程序池、虚拟目录、绑定与配置节的操作命令均由该程序集提供,如 New-WebSite、New-WebApplication、New-WebVirtualDirectory、New-WebBinding、Start-WebAppPool、Restart-WebAppPool、Get-WebAppPoolState、Get-WebsiteState、Set-WebConfigurationProperty、Get-WebConfiguration、Clear-WebConfiguration 等。
- 封装 Microsoft.Web.Administration:把 MWA 的对象模型(ServerManager、Site、ApplicationPool、ConfigurationElement)转换为 PowerShell 对象与管道输出,配置读取结果可直接参与 Select-Object、Where-Object、Export-Csv 等后续处理。
- 支持配置系统高级语义:写入时遵循节锁定(Section Locking)、功能委派(Feature Delegation)、配置层次继承与 CommitChanges 提交机制,保证脚本修改结果与 IIS 图形管理器一致。
三、缺少 DLL 的直接影响
| 使用场景 | 典型表现 |
| 导入模块 | 报 Could not load file or assembly 'Microsoft.IIS.PowerShell.Commands',或模块清单指定文件不存在。 |
| 命令可用性 | Get-Website、New-WebAppPool、Set-WebConfigurationProperty 等全部不可用,报 CommandNotFoundException。 |
| 驱动器 | IIS:\ 盘符无法挂载,依赖该路径的脚本立即中断。 |
| 自动化链路 | CI/CD 流水线、批量部署与巡检脚本执行失败,IIS 配置只能退回图形界面手工维护。 |
四、常见成因与排查
安装 IIS 时未勾选“管理脚本与工具”组件;文件被安全软件或清理工具误删;系统盘迁移或镜像还原导致 inetsrv 目录不完整;32 位与 64 位 PowerShell 混用加载了错误位数版本;.NET 程序集版本绑定失败。
可通过 Get-WindowsFeature Web-Scripting-Tools 检查安装状态,用 sfc /scannow 与 DISM /RestoreHealth 修复系统文件,并在 32/64 位 PowerShell 中分别测试 Import-Module WebAdministration 的加载结果。