Powershell Get-WMIObject 失败,出现“无效命名空间”错误

Powershell Get-WMIObject 失败,出现“无效命名空间”错误

情况如下:我尝试使用 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()

但是,这会导致“无效命名空间”错误:

get-wmiobject 命名空间错误

我在 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

相关内容