尝试从$ 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
}
}
答案 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
}
}