首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell异常捕获

PowerShell异常捕获
EN

Stack Overflow用户
提问于 2018-06-19 06:41:05
回答 1查看 131关注 0票数 1

我想要一些设备的ip。其中一些是无法触及的。如果PowerShell想获得无法到达的设备的ip,它将终止整个脚本。我想过要抓住例外。但是我找不到任何关于如何抓住“主人是未知的”的东西。我对我尝试过的例外情况不太了解,但它当然不起作用:

代码语言:javascript
复制
` try {
    $IPClient = Test-Connection $name -Count 1
    $IPv4 = $IPClient.IPV4Address.IPAddressToString 
    } catch {
    $IPv4 = "Could not find $name"
 }`

如果PowerShell找到一个无法到达的设备,它将终止整个脚本。我怎样才能捕捉到这一点,这样我的$name列表就会继续,并且可能会在变量中填充“$name找不到的设备”之类的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 06:52:48

Test-Connection正在抛出一个“不终止”的异常,而catch不处理这个异常。若要强制它成为“终止”(因此由catch处理),请使用-ErrorAction参数:

代码语言:javascript
复制
try 
 {
    $IPClient = Test-Connection $name -Count 1 -ErrorAction Stop
    $IPv4 = $IPClient.IPV4Address.IPAddressToString 
 } 
 catch 
 {
    $IPv4 = "Could not find $name"
 }

编辑:测试多台服务器

要测试服务器列表,捕捉任何失败的服务器,一个选项是:

代码语言:javascript
复制
$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是一个哈希表,您可以这样显示它:

代码语言:javascript
复制
$ipv4

它提供表中的输出:

代码语言:javascript
复制
Name       Value        
----       -----        
server2    Unreachable  
Server3    10.10.10.10
server1    Unreachable 

按名称访问任何项目:

代码语言:javascript
复制
$ipv4.Server2
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50922081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档