Powershell foreach循环带有文件外问题

时间:2012-08-09 21:09:28

标签: powershell

我正在尝试使用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。是什么给了什么?

1 个答案:

答案 0 :(得分: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"
    }
}