Windows-Server-2008

Powershell Get-WMIObject 失敗並出現“無效命名空間”錯誤

  • December 12, 2011

情況如下:我正在嘗試使用 PowerShell 自動回收 AppPool(帶有 IIS7 的 Windows Server 2008)。我正在嘗試使用此處找到的 PowerShell 腳本來執行此操作:

$appPoolName = $args[0]
$appPool = get-wmiobject -namespace "root\MicrosoftIISv2" 
                        -class "IIsApplicationPool" 
                 | Where-Object {$_.Name -eq "W3SVC/APPPOOLS/$appPoolName"}
$appPool.Recycle()

但是,這會導致“無效命名空間”錯誤:

獲取 wmiobject 命名空間錯誤

我四處搜尋,發現我可能錯過了我為 IIS 設置的“IIS 管理腳本和工具”角色服務。

如何解決此問題,或者,我可以在沒有 WMI 的情況下使用 Powershell 回收 AppPool?

編輯

  • 澄清這一點是沒有 Hyper-V (SP2) x64 的 Windows Sever 2008 Enterprise。
  • 在 x64 版本的 Powershell 中執行上述命令會導致同樣的錯誤。
  • Add-PSSnaping WebAdministration從 32 位執行:

Add-PSSnapin:此電腦上未安裝 Windows PowerShell 管理單元“WebAdministration”。

  • 而在 64 位環境下:

Add-PSSnapin:沒有為 Windows PowerShell 版本 2 註冊任何管理單元。

  • (64 位)Get-PSSnapin -Registered不返回任何內容
  • (32 位)Get-PSSnapin -Registered返回 Windows.ServerBackup、PSVersion 1.0

試試http://technet.microsoft.com/en-us/library/ee807823.aspx

add-pssnapin WebAdministration
Restart-WebItem 'IIS:\AppPools\DefaultAppPool'

你在執行什麼作業系統?是 x64 還是 x86?這可能會影響管理單元的載入。如果是 x64,請嘗試從 x64 和 x86 版本的 powershell 載入管理單元。

x64 位於 C:\Windows\System32\WindowsPowerShell\v1.0 中,x86 位於 C:\Windows\SysWow64\WindowsPowerShell\v1.0

還有,你跑的時候看到了什麼

Get-PSSnapin -Registered

引用自:https://serverfault.com/questions/202535