我正在使用PSRemoting與Web管理模塊獲取有關各個站點的信息,並且它正在工作。然而,我在調用該命令期間接收到一個煩人的非致命COM異常,並想知道是否有其他人解決了它。這裏有一個最小的實現:PowerShell IIS: WebAdmin遠程調用觸發器WSAStartup錯誤,WSANOTINITIALISED
cls
$command = {
param($alias)
Import-Module 'WebAdministration'
$binding = Get-WebBinding -HostHeader $alias
$binding
}
$server = 'server'
$args = @('alias')
$session = New-PSSession -ComputerName $server
Write-Host ("Invoking")
try {
Invoke-Command -Session $session -ScriptBlock $command -ArgumentList $args
Write-Host ("Invoked")
} catch {
Write-Host ("Caught $_")
} finally {
Write-Host ("Removing")
Remove-PSSession -Session $session
Write-Host ("Removed")
}
而且這裏的結果:
Invoking
protocol : http
bindingInformation : 10.x.x.x:80:alias
...
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema
An unhandled COM interop exception occurred: Either the application has not called WSAStartup, or WSAStartup failed. (Exception from HRESULT: 0x800
7276D)
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : COMException
Invoked
Removing
Removed
我觀察的結果被拋出錯誤之前返回。
好玩的細節:
- 獲取-網站,獲取項目 「IIS:\ ...」,則Get-WebBinding都會導致同樣的錯誤
- 直接在目標計算機上運行$命令,以書面結果沒有錯誤
- 獲取項目「d:\ ...」不會導致任何錯誤
- 的COM錯誤不
我從PowerGUI的和Powershell命令提示符和對2臺不同的目標服務器3級獨立的服務器W2K8運行這段代碼。在所有情況下,我都收到了同樣的錯誤。 – codepoke 2012-02-24 16:27:38
有趣的是,NetMon顯示與/ wsman的加密對話在失敗的WebAdmin會話和「成功」的Get-Item'd:\'會話之間非常相似。這兩個會話都以遠程服務器發回加密數據結束,然後(到最後一個帖子,理論上斷開請求?)500內部服務器錯誤。沒有真正的信息,因爲我無法解密對話,但很有趣。 – codepoke 2012-02-24 18:39:17
由於我處於詳細模式,因此我將添加這個內容非常重要,因爲我的內部客戶端會看到錯誤並困擾我。爲此,直到找到真正的解決方案,我在遠程調用中添加了「-ErrorAction SilentlyContinue」。它處理這個問題。 – codepoke 2012-02-24 18:45:50