3

winrm がシステムのリストで機能するかどうかをテストしようとしています。ただし、システムに接続しようとしたときに表示されるエラーをキャッチ/サイレンシングできないようです。1 つのシステムで動作するようです:

PS C:\Users\Egr> winrm id -r:system1
IdentifyResponse
    ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
    ProductVendor = Microsoft Corporation
    ProductVersion = OS: x.x.xxxx SP: x.x Stack: x.x

しかし、別のものでは機能しません:

PS C:\Users\Egr> winrm id -r:system2
WSManFault
    Message = WinRM cannot process the request. The following error occured while using Kerberos authentication: The net
work path was not found.
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use
 HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config.

Error number:  -2147024843 0x80070035
The network path was not found.

try/catch ブロックで囲んでみましたが、沈黙していないようです。これらのシステムに対してチェックを実行して、WinRM が正しく構成され、機能しているシステムを特定しようとしています。しかし、スクリプトがこのテキストを出力し続けると、うまく動作しません。このテキストを抑制する方法はありますか、または WinRM 接続をテストするためのより良い方法はありますか?

4

1 に答える 1

2

エラー ストリームをリダイレクト$nullし、評価$LastExitCodeしてエラーを検出できます。

$rhost = 'system2'

winrm id -r:$rhost 2>$null
if ($LastExitCode -eq 0) {
  Write-Host "$rhost OK" -ForegroundColor green
} else {
  Write-Host "$rhost unavailable" -ForegroundColor red
}
于 2013-08-12T20:49:33.010 に答える