2

サーバーリストのすべてのシリアル番号を取得する単純なループを取得しました。

始める

foreach ($computer in $computers) 
{
    try
    {
        Get-WmiObject -computer $computer -Class Win32_OperatingSystem|Select Serial*
    }
    catch
    {
        Write-Host "Invalid Server"
    }
}

終わり

ただし、出力は次のエラーといくつかのサーバーの正しい出力ですべて見苦しく見えます。

Get-WmiObject : RPC サーバーが使用できません Get-WmiObject : Access Denied など ( Try/Catchループの目的はそれらを排除することではないでしょうか?)

奇妙なことに、出力にも「無効なサーバー」と表示されることがありますが、エラーの正確な違いと、Try/Catch ループの制限は何ですか?

ここで何が間違っていますか?質問があればお願いします。

4

2 に答える 2

4

上記のコードで例外をスローするには、次のように行に追加-ErrorAction Stopします。Get-WmiObject

Get-WmiObject -computer $computer -Class Win32_OperatingSystem -ErrorAction Stop | Select Serial*

キース・ヒルによるこの記事を参照してください: 「終了」エラーと「非終了」エラーの区別.

于 2012-12-27T00:03:03.743 に答える
0

@Graimer 行$ErrorActionPreference = "Stop"がトリックを行い、出力はエラーなしでクリーンでした。

于 2012-12-27T16:04:20.677 に答える