powershell Foreach对象用法
我有剧本:powershell Foreach对象用法,powershell,powershell-2.0,Powershell,Powershell 2.0,我有剧本: $servers = "server01", "s02", "s03" foreach ($server in $servers) { $server = (New-Object System.Net.NetworkInformation.Ping).send($servers) if ($server.Status -eq "Success") { Write-Host "$server is OK" } } 错误消息: An exception occured during
$servers = "server01", "s02", "s03"
foreach ($server in $servers) {
$server = (New-Object System.Net.NetworkInformation.Ping).send($servers)
if ($server.Status -eq "Success") {
Write-Host "$server is OK"
}
}
错误消息:
An exception occured during a Ping request.
我需要ping$servers数组中的每个服务器并显示状态。我认为,Foreach语句没有正确使用,但我无法找出问题所在。感谢您的建议您不应该在foreach循环中修改
$server
的值。声明新变量(例如,$result
)。另外,Ping.Send
将单个服务器名称而不是服务器名称数组作为参数。下面的代码应该可以工作
最后,您需要捕获PingException,如果无法访问主机,将抛出该异常,否则脚本将打印出一个大的红色错误以及预期的结果
$servers = "server1", "server2"
foreach ($server in $servers) {
& {
trap [System.Net.NetworkInformation.PingException] { continue; }
$result = (New-Object System.Net.NetworkInformation.Ping).send($server)
if ($result.Status -eq "Success") {
Write-Host "$server is OK"
}
else {
Write-Host "$server is NOT OK"
}
}
}
您不应该在foreach循环中修改
$server
的值。声明新变量(例如,$result
)。另外,Ping.Send
将单个服务器名称而不是服务器名称数组作为参数。下面的代码应该可以工作
最后,您需要捕获PingException,如果无法访问主机,将抛出该异常,否则脚本将打印出一个大的红色错误以及预期的结果
$servers = "server1", "server2"
foreach ($server in $servers) {
& {
trap [System.Net.NetworkInformation.PingException] { continue; }
$result = (New-Object System.Net.NetworkInformation.Ping).send($server)
if ($result.Status -eq "Success") {
Write-Host "$server is OK"
}
else {
Write-Host "$server is NOT OK"
}
}
}