使用测试连接时获取 IP 地址

Ste*_*eve 1 powershell powershell-2.0 powershell-3.0

我正在尝试将 IP 地址添加到此脚本中,如果我能让它正常工作那就完美了。任何帮助是极大的赞赏。输入文件有主机名,我想将 IP 地址放入 csv 中。

$servers = Get-content "servers.txt"
$collection = $()
foreach ($server in $servers)
{
    $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s);"IP" = what to put here? }
    if (Test-Connection $server -Count 1 -ea 0 -Quiet)
    { 
        $status["Results"] = "Up"
    } 
    else 
    { 
        $status["Results"] = "Down" 
    }
    New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
    $collection += $serverStatus

}
$collection | Export-Csv -LiteralPath .\ServerStatus.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 5

使用-Quiet会抑制您正在寻找的信息。删除安静,而是将结果捕获到变量中,然后您可以查询成功和 IP 地址。

$status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s)}
$result = Test-Connection $server -Count 1 -ErrorAction SilentlyContinue
if ($result)
{ 
    $status.Results = "Up"
    $status.IP =  ($result.IPV4Address).IPAddressToString
} 
else 
{ 
    $status.Results = "Down" 
    $status.IP = "N/A"
}
Run Code Online (Sandbox Code Playgroud)

我不确定这种逻辑是否会产生误导性信息,但我正在使用它以防万一。

如果您已经切换到 IPv6 那么您可能更感兴趣($result.IPV6Address).IPAddressToString