【发布时间】:2016-04-13 17:57:59
【问题描述】:
我想知道如何从 Test-Connection 脚本返回 Resolve-DnsName 输出并将其添加到我创建的 CSV 中。
我喜欢从中获取名称、类型、TTL、部分。
仅在 ping 不成功时调用Resolve-DnsName。
$servers = Get-Content "servers.txt"
$collection = $()
foreach ($server in $servers)
{
$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"
$status.DNS = if (-not(Resolve-DnsName -Name $server -ErrorAction SilentlyContinue))
{
Write-Output -Verbose "$server -- Not Resolving"
}
else
{
"$server resolving"
}
}
New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
$collection += $serverStatus
}
$collection | Export-Csv -LiteralPath .\ServerStatus3.csv -NoTypeInformation
但没有向 CSV 添加任何新内容。
【问题讨论】:
-
不要假设。尝试。如果失败:回来并展示您尝试过的内容以及获得的结果。
-
如果没有添加任何内容,我怀疑该名称确实可以解析。在该语句中添加一个
else分支以确保:$status.DNS = if (...) {...} else {"$server resolving"} -
我试过了,什么都没有写出来。请问还有什么建议吗?
标签: powershell powershell-2.0 powershell-3.0