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