使用 Test-Connection 获取 IP 地址
Getting IP address while using Test-Connection
我正在尝试将 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
使用-Quiet
会隐藏您要查找的信息。移除 quiet 并在变量中捕获结果,然后您可以查询成功和 ipaddress。
$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"
}
我不确定这种逻辑是否会产生误导性信息,但我正在尝试以防万一。
如果您已经切换到 IPv6,那么您可能对 ($result.IPV6Address).IPAddressToString
更感兴趣
谢谢你,马特,你帮助我解决了我的问题。
我发现我无法在新变量中使用 (.)。可能是我自己的误会。我 post 这可能会帮助其他人解决我同样的问题。
根据您的回答以及我必须如何调整的示例。
$status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s)}
$result = Test-Connection $server -Count 1 -ErrorAction SilentlyContinue
if ($result)
{
$StatusResult = "Up"
$statusIP = ($result.IPV4Address).IPAddressToString
}
我正在尝试将 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
使用-Quiet
会隐藏您要查找的信息。移除 quiet 并在变量中捕获结果,然后您可以查询成功和 ipaddress。
$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"
}
我不确定这种逻辑是否会产生误导性信息,但我正在尝试以防万一。
如果您已经切换到 IPv6,那么您可能对 ($result.IPV6Address).IPAddressToString
谢谢你,马特,你帮助我解决了我的问题。
我发现我无法在新变量中使用 (.)。可能是我自己的误会。我 post 这可能会帮助其他人解决我同样的问题。
根据您的回答以及我必须如何调整的示例。
$status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s)}
$result = Test-Connection $server -Count 1 -ErrorAction SilentlyContinue
if ($result)
{
$StatusResult = "Up"
$statusIP = ($result.IPV4Address).IPAddressToString
}