10

Powershell バージョン 2 を使用しているため、ここで説明されているように Ping-Host を使用できません。PowerShell で Ping-Host をブール値として扱う方法はありますか?

テスト接続を使用できます。つまり、

Test-Connection *ip_address* -count 1

これをブール値にしようとしていますが、機能していません

if ($(test-connection server -count 1).received -eq 1) { write-host "blah" } else {write-host "blah blah"}

ping を実行できるサーバーは、ping を実行できないかのように、"何とか何とか" を出力します。

一方、到達できないサーバーに ping を実行すると、エラー メッセージが表示されます。

Test-Connection : コンピューターサーバーへの接続のテストに失敗しました: リソース不足によるエラー 行:1 char:22 + if ($(test-connection <<<< server -count 1).received -eq 1) { write- host "何とか" } else {write-host "何とか何とか"} + CategoryInfo : ResourceUnavailable: ( server :String) [Test-Connection], PingException + FullyQualifiedErrorId : TestConnectionException,Microsoft.PowerShell.Commands.TestConnectionCommand

そして最後に、それはまだ「何とか何とか」を出力します。

直し方?

4

3 に答える 3

26

-Quietスイッチを試してください:

Test-Connection server -Count 1 -Quiet    

-Quiet [<SwitchParameter>]
    Suppresses all errors and returns $True if any pings succeeded and $False if all failed.

    Required?                    false
    Position?                    named
    Default value                False
    Accept pipeline input?       false
    Accept wildcard characters?  false
于 2013-07-30T18:56:28.557 に答える
10

Receivedは、 Test-Connectionが返すオブジェクトのプロパティではないため$(test-connection server -count 1).received、null と評価されます。難しく考えすぎだよ; そのまま使用してif (Test-Connection -Count 1)ください。エラー メッセージを抑制するには、-ErrorAction SilentlyContinueを使用するか、コマンドをOut-Nullにパイプします。次のいずれかが機能します。

if (Test-Connection server -Count 1 -ErrorAction SilentlyContinue) { write-host "blah" } else {write-host "blah blah"}

また

if (Test-Connection server -Count 1 | Out-Null) { write-host "blah" } else {write-host "blah blah"}
于 2013-07-30T17:46:07.207 に答える