2014-06-05 4 views
0

Essayer d'attraper l'exception générale de $ Pingy = Get-WmiObject Win32_PingStatus -f "Adresse = '$ Fip'" déjà essayé de faire catch [Exception], attraper [System.Exception] et juste attraper. En utilisant powershell Version 2.Attraper une exception générale - powershell

la question est comment attraper cette exception générale pour Get-WmiObject. Le code vérifie ultérieurement pingSuccess true ou false pour déterminer comment procéder. À l'heure actuelle, c'est toujours mettre pingSuccess à true, ce que je ne veux pas si l'exception est levée.

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

Salut - Pouvez-vous préciser votre question/problème? –

+0

mis à jour ci-dessus^ – user3700372

+0

'get-help about_return' .. le catch ne sera jamais exécuté si vous quittez toujours la fonction dans l'essai – Cole9350

Répondre

0

Il ressemble même

Win32_PingStatus -f "Address='somenonsehere'" 

ne provoque pas une erreur. Donc, vous n'obtiendrez rien de cette façon, mais si votre but est de détecter si un ordinateur est pingable ou non, vous pourriez peut-être changer votre script un peu pour faire cela. Par exemple:

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 
} 

}

Questions connexes