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
etErrorVariable
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 :