2012-02-24 7 views
1

WebAdministrationモジュールでPSRemotingを使用して、さまざまなサイトに関する情報を取得しています。しかし、私はコマンドの呼び出し中に致命的な致命的でないCOM例外を受け取り、他の誰かがそれを解決したのか疑問に思っています。PowerShell IIS: WebAdminリモート呼び出しによりWSAStartupエラーWSANOTINITIALISEDが発生する

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 

私は結果が前にエラーがスローされることに返される観察:

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") 
} 

そして、ここでは結果である:ここでは最小限の実装です。

面白いの詳細:
- ゲット・ウェブサイトは、Get-項目を "IIS:\ ..." は、Get-WebBinding同じエラーですべての結果を
- で書かれた結果として、ターゲットマシン上で直接$コマンドを実行しますエラーません
なし - ゲット-項目を「D:\ ...」エラー
にはなりません - COMエラーがない

+0

私はPowerguiブロックとPowerShellの3台の別々のW2K8サーバプロンプトと2台の異なるターゲットサーバに対してからこのコードを実行しました。すべての場合において、私は同じエラーを受けました。 – codepoke

+0

興味深いことに、NetMonは、/ wsmanを使用した暗号化された会話が、失敗したWebAdminセッションと「成功した」Get-Item 'd:\'セッション間で非常に似ていることを示しています。両方の会話は、リモートサーバーが暗号化されたデータを送信し、最後に(最後のポストに、理論的に切断要求ですか?)500内部サーバーエラーが発生します。私は会話を解読することができないので、実際の情報はありませんが、面白いです。 – codepoke

+0

私は冗長モードなので、内部クライアントがエラーを見て気にするので、これは重要です。そのために、実際の解決策が見つかるまで、リモート呼び出しに「-ErrorAction SilentlyContinue」を追加しました。それは問題を処理します。 – codepoke

答えて

0

これは.NETのPowerShellのの実装の腸のどこかに深く埋め込まれず、 winsock。それは私が校正できるものの下にあるので、リモート呼び出しに "-ErrorAction SilentlyContinue"を追加しました。それは何も修正されませんが、すべて正常に動作します。それは今のところ十分な答えだと思います。

2

私は、以下のものを使用して問題を回避することができました:

$iisIpAddresses = Invoke-Command -Session $session -scriptblock { 
    if (!(Get-Module WebAdministration)) 
    { 
     Import-Module WebAdministration 
    } 
    $iisBindings = Get-WebBinding 
    [String[]]$iisBindings = $iisBindings | Select bindingInformation 
    $iisBindings 
} 

Remove-PSSession $session 
関連する問題