我想要一些设备的ip。其中一些是无法触及的。如果PowerShell想获得无法到达的设备的ip,它将终止整个脚本。我想过要抓住例外。但是我找不到任何关于如何抓住“主人是未知的”的东西。我对我尝试过的例外情况不太了解,但它当然不起作用:
` try {
$IPClient = Test-Connection $name -Count 1
$IPv4 = $IPClient.IPV4Address.IPAddressToString
} catch {
$IPv4 = "Could not find $name"
}`如果PowerShell找到一个无法到达的设备,它将终止整个脚本。我怎样才能捕捉到这一点,这样我的$name列表就会继续,并且可能会在变量中填充“$name找不到的设备”之类的内容。
发布于 2018-06-19 06:52:48
Test-Connection正在抛出一个“不终止”的异常,而catch不处理这个异常。若要强制它成为“终止”(因此由catch处理),请使用-ErrorAction参数:
try
{
$IPClient = Test-Connection $name -Count 1 -ErrorAction Stop
$IPv4 = $IPClient.IPV4Address.IPAddressToString
}
catch
{
$IPv4 = "Could not find $name"
}编辑:测试多台服务器
要测试服务器列表,捕捉任何失败的服务器,一个选项是:
$names = "Server1","Server2","Server3"
$ipv4 = @{}
foreach($server in $names)
{
try
{
$ipClient = Test-Connection $server -Count 1 -ErrorAction Stop
$ipv4.Add($server, $IPClient.IPV4Address.IPAddressToString)
}
catch
{
$ipv4.Add($server, "Unreachable")
}
}$ipv4是一个哈希表,您可以这样显示它:
$ipv4它提供表中的输出:
Name Value
---- -----
server2 Unreachable
Server3 10.10.10.10
server1 Unreachable 按名称访问任何项目:
$ipv4.Server2https://stackoverflow.com/questions/50922081
复制相似问题