Gestion des erreurs...

La gestion des erreurs avec PowerShell V1 ne dispose pas des options évoluées de type try/catch/finally que l'on retrouve dans les langages de haut niveau. Mais cela sera corrigé avec PowerShell V2 où apparait le try/catch/finally.

Cependant même en V1, on peux utiliser des choses qui ressemblent comme ce PowerShell: Try...Catch...Finally Comes To Life  (UPDATE : le lien corrigé https://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx )

Sinon il y a 3 méthodes possibles pour gérer les erreurs avec PowerShell V1 :

  • les paramètres ErrorAction et ErrorVariable
  • la méthode trap
  • la méthode throw

Elles sont décrites ici : https://www.informit.com/articles/article.aspx?p=729101&seqNum=5. Il s'agit d'un extrait du livre Windows® PowerShell Unleashed

Voici par exemple une utilisation du throw :

param([string]$MyParam = $(throw write-host "You did not define MyParam" -Foregroundcolor Red))

write-host $MyParam

Voici un exemple de gestion d’erreur avec trap :

#P265-TrapTest.ps1

#pg265 Chapter 20 Error Handling

#An example of error trapping and handling

function CheckWMI ($computer) {

trap {

   write-host "An error occured: "

   write-host "ID: " $_.ErrorID

   write-host "Message: "$_.Exception.Message

   throw "Couldn't check $computer"

}

$a = Get-WmiObject Win32_OperatingSystem `

  -property ServicePackMajorVersion `

  -computer $computer -ea stop

write-host "$computer : " $a.ServicePackMajorVersion

}

write-host "Service Pack Versions:"

CheckWMI("DON-PC")

CheckWMI("TESTBED")

Ça vient de là : https://www.sapienpress.com/powershell2.asp

C'est l'un des exemples du livre Windows PowerShell™ v1.0: TFM

Enfin pour une description détaillée des erreurs avec de nombreux pointeurs , je vous recommande la lecture de ce billet : Trap [Exception] { “In PowerShell” } sur l'excellent site :

image