当源CSV中有多行时,PowerShell的CSV输出(测试连接)显示为空白

时间:2014-09-10 06:14:18

标签: powershell csv

我在脚本下面运行:

$ErrorActionPreference = "SilentlyContinue"
$servers = import-csv 'config-network devicetest.csv'
$collection = $()
foreach ( $IPAddress in $servers)
{
$status = @{ "ServerName" = $servers.HostName; "TimeStamp" = (Get-Date -f s) }
if (Test-Connection -IPAddress $servers.IPAddress -Count 1 -ea 0 -quiet)
{ 
    $status["Results"] = "Active"
} 
else 
{ 
    $status["Results"] = "Inactive" 
}
New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
$collection += $serverStatus

}
$collection | Export-Csv .\ServerStatus.csv -NoTypeInformation

如果我在CSV文件中有一行有主机名和IP地址(要ping) 输出是预期的。

TimeStamp结果ServerName

2014-09-10T12:57:23 Active Server1(例如)

当我在下一行添加额外的IP地址和主机名时,我得到的是空白结果和服务器名称;带有时间戳。

目前,对于CSV内容的导入/导出还相当新,而且我已经花了一段时间研究了PowerShell。我错过了多次输入(我有一个包含数千个IP地址和主机名的CSV),如上所示?

我还尝试将-delay参数添加到test-connection命令中,但这没有任何效果(运行时似乎没有任何延迟)。 我还添加了erroractionpreference(对于$ IPaddress列中的任何空白字段)。

任何帮助都会受到赞赏,因为我很难过。

1 个答案:

答案 0 :(得分:2)

在foreach-loop中,用$ IPAddress替换$ servers