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 回答