无法通过使用Shellscript进行ping操作来获取远程服务器详细信息

时间:2015-11-16 22:56:11

标签: csv powershell powershell-v3.0 powershell-remoting

无法通过ping服务器来获取远程服务器详细信息:

$servers = Get-Content C:\Users\list.txt
$collection = $()
foreach ($server in $servers)
{
$status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s); "NSLookUp" = (nslookup -a $server) };
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 C:\Users\status.csv -NoTypeInformation

无法从此“NSLookUp”获取远程服务器详细信息=(nslookup -a $ server)

任何建议.......伙计们

2 个答案:

答案 0 :(得分:0)

我尝试了你的脚本,用out-gridview代替export-csv,它运行了。由于-a参数,我确实看到来自nslookup的错误,但它仍然有效。可能您已配置的DNS服务器不知道您的主机

这是使用FT的输出。我只是在这里展示NSLookup属性,否则很难阅读。

$collection|ft -auto
    NSLookUp                                                                              
    --------                                                                              
    {Server:  google-public-dns-a.google.com, Address:  8.8.8.8, , Name:    google.com...}
    {Server:  google-public-dns-a.google.com, Address:  8.8.8.8, , Name:    ibm.com...}   

BTW,我正在使用PS 3.0

编辑:当我使用export-csv时,我看到system.object []。

我想我看到了问题。 .NSLookup成员是一个行数组。您需要将其转换为单个字符串。类似的东西:

$last = $collection.count -1 
0..$last | % {$collection[$_].nslookup = -join $collection[$_].nslookup

答案 1 :(得分:0)

更改: $collection = $()$collection = @()

变化:

New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
$collection += $serverStatus

$collection += New-Object -TypeName PSObject -Property $status 

nslookup -a $server做什么...这是在命令提示符下运行的吗? 当元素是数组而不是字符串时,在输出中得到system.object []。