情况如下:我尝试使用 PowerShell 自动回收 AppPool(Windows Server 2008 和 IIS7)。我尝试使用找到的 PowerShell 脚本执行此操作这里:
$appPoolName = $args[0]
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2"
-class "IIsApplicationPool"
| Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
$appPool.Recycle()
但是,这会导致“无效命名空间”错误:
我在 Google 上搜索了一下,发现我可能缺少为 IIS 设置的“IIS 管理脚本和工具”角色服务。
我该如何修复此问题,或者我是否可以在没有 WMI 的情况下使用 Powershell 回收 AppPool?
编辑
需要澄清的是,这是不带 Hyper-V (SP2) x64 的 Windows Sever 2008 Enterprise。
在 x64 版本的 Powershell 中运行上述命令会导致同样的错误。
从 32 位运行
Add-PSSnaping WebAdministration
:Add-PSSnapin:此计算机上未安装 Windows PowerShell 管理单元“WebAdministration”。
在64位环境中:
Add-PSSnapin:尚未为 Windows PowerShell 版本 2 注册任何管理单元。
(64位)
Get-PSSnapin -Registered
不返回任何内容(32 位)
Get-PSSnapin -Registered
返回 Windows.ServerBackup,PSVersion 1.0
答案1
尝试http://technet.microsoft.com/en-us/library/ee807823.aspx
add-pssnapin WebAdministration
Restart-WebItem 'IIS:\AppPools\DefaultAppPool'
答案2
您运行的是什么操作系统?是 x64 还是 x86?这可能会影响 snapin 的加载。如果是 x64,请尝试从 x64 和 x86 版本的 powershell 加载 snapin。
x64 位于 C:\Windows\System32\WindowsPowerShell\v1.0,x86 位于 C:\Windows\SysWow64\WindowsPowerShell\v1.0
另外,当你跑步时你看到了什么
Get-PSSnapin -Registered