我在脚本下面运行:
$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列中的任何空白字段)。
任何帮助都会受到赞赏,因为我很难过。
答案 0 :(得分:2)
在foreach-loop中,用$ IPAddress替换$ servers