1

PowerShellを使用してサーバーのリストへのネットワーク接続をテストし、trueが返された場合にのみテキストファイルにダンプしようとしています。私のコードで何が起こるかというと、pingを実行しなかったサーバーが含まれているということです。これが私が持っているものです:

$servers = Get-Content c:\script\servers.txt
foreach($server in $servers)
{
Test-Connection $server -count 1 -quiet
    if ($True){out-file -InputObject $server, $True -Encoding ASCII -Width 50 -Append c:\scriptoutput.txt}
    else { write-host "server $server could not be contacted"}
}

これで、出力ファイルに表示されるのは

server1
True
server2
True
server3
True

しかし、私がコンソールに表示するのはこれです:

PS C:\> C:\test.ps1
True
True
False

サーバー3は存在しないため、pingを実行できませんが、出力ファイルではTrueとして表示されますが、コンソールではFalseと表示されます。何が得られますか?

4

1 に答える 1

4

elseステートメントに到達しないだけでなく、常にtrueファイルに出力しています。代わりにこれを試してください:

$servers = Get-Content c:\script\servers.txt
foreach ($server in $servers)
{
    $connected = Test-Connection $server -count 1 -quiet
    if ($connected) {
        $server,$connected | Out-File -Enc ASCII -Width 50 -Append c:\scriptoutput.txt
    }
    else { 
        write-host "server $server could not be contacted"
    }
}
于 2012-08-09T23:15:02.263 に答える