PowerShell attrape les exceptions typées

Je vais avoir un problème avec PowerShell où il ne sera pas attraper une exception, même lorsque l'exception est mentionnée explicitement dans la prise de commande.

Dans ce cas, j'essaie de déterminer si un ProcessID est toujours en cours d'exécution, et si non, alors il va effectuer certaines actions.

L'exemple de bloc de code que je suis mal, c'est:

    try {
      Get-Process -Id 123123 -ErrorAction 'Stop'
    } 
    catch [Microsoft.PowerShell.Commands.ProcessCommandException] {
      "Caught by Exception Type: Process is missing"
    }
    catch {
    if ($_.Exception.getType().FullName -eq "Microsoft.PowerShell.Commands.ProcessCommandException") {
      "Caught by Catch All: Process is missing"
      }
    }

Lorsque ce bloc de code est exécuté la sortie est:

Caught by Catch All: Process is missing

Vous attendez à ce que le premier cran de la condition de déclenchement de noms de l'exception levée correctement, mais il ne déclenche pas.

Pour aggraver les choses, lors de la deuxième capture commande s'exécute (qui attrape rien), il interroge le nom du type d'exception et vérifie si elle est "de Microsoft.PowerShell.Commandes.ProcessCommandException" (qui il est) et prend alors les mesures appropriées.

Je sais que je peux contourner ce problème, mais je sens que je vais manquer une manière fondamentale sur la façon PowerShell gère les Exceptions.

Quelqu'un peut-il faire la lumière sur ce pour moi?

source d'informationauteur David Thomas