Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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 :