捕获一般异常 - powershell

时间:2014-06-05 18:27:39

标签: exception powershell

尝试从$ Pingy = Get-WmiObject获取常规异常Win32_PingStatus -f"地址=' $ Fip'"尝试已经做了[异常],捕获[System.Exception]并抓住。使用PowerShell版本2。

问题是如何捕获Get-WmiObject的常规异常。代码稍后检查pingSuccess是或否,以确定如何继续。现在它总是将pingSuccess设置为true,如果抛出异常我不想要。

function Ping
{   
    param($Fip)
    try
    {
    $Pingy = Get-WmiObject Win32_PingStatus -f "Address='$Fip'"  

    return New-Object PSObject -Property @{
        pingSuccess=$true
        ex=$null
        code=$Pingy.statuscode
        }
    }
    catch [System.Exception]
    {
    return New-Object PSObject -property @{
        ex=$_.Exception
        pingSuccess=$false
        }
#   write-host $exc.gettype()
#   write-host $exc.message
#   write-host $exc.innerException
    }
}

1 个答案:

答案 0 :(得分:0)

看起来甚至

Win32_PingStatus -f "Address='somenonsehere'"

不会导致错误。所以你不会得到任何方式,但如果你的目的是检测一台计算机是否可以ping通,也许你可以稍微改变你的脚本来做到这一点。 例如:

function Ping
{   
    param($Fip)
    $pingStatus=$false                        
    if ((Get-WmiObject Win32_PingStatus -f "Address='$Fip'").StatusCode -eq 0)   {
            $pingStatus=$true
            #$code=0 ## if you want the code, but you already know that.                        

    } 
         New-Object PSObject -Property @{
            pingSuccess=$pingStatus
          #  code=0
}

}