TUTOS.EU

Gestion des erreurs en Powershell

Différents exemples de gestion d erreurs en Powershell

La gestion des erreurs se fait comme en C#, avec des balises try et catch.
Dans les balises try on essaye une opération. Si cette dernière ne fonctionne pas, alors c'est le code situé dans la balise catch qui est exécuté.
A noté que pour être catché, l'erreur doit être bloquante, c'est la raison pour laquelle dans l'exemple ci-dessous on utilise -Force -ErrorAction Stop
sur la commande Remove-Item

try
{
	Remove-Item $("C:\unfichier.txt") -Force -ErrorAction Stop
}
catch
{
	Write-host $($_.exception.message)
	
}
Lien vers le fichier : cliquez ici Copier le code

Sinon de façon basique, on peut donner pour instruction de ne pas s'arrêter en cas d'erreur et on regarde quand voulu si une erreur a été remontée :

Clear-Host

$ErrorActionPreference = "Continue"
#$ErrorActionPreference = "silentlycontinue" #En cas d'erreur, on ne dit rien et on continu
$DebugPreference = "Continue" #En cas d'erreur, Powershell montrera le message et continuera


$Error.Clear() #Purge des erreurs
Get-PSSnapin vmware*  #Passage d'une commande qui peut éventuellement provoquer une erreur
if($Error.Count -ne 0) #Si on a une erreur
{  
    Write-Host "Erreur : "
	Write-Host $error[0] #Affichage de l'erreur
    #break  #Si nécessaire et si vous êtres dans une boucle, vous pouvez faire un break pour en sortir
}
Lien vers le fichier : cliquez ici Copier le code

Autre exemple du même type :

#Exemples de gestion d'erreurs
#Version du 18 avril 2013

Clear-Host

$Error.Clear()
#Utilisation d'une variable qui agit au niveau du reste du script
#$ErrorActionPreference = "silentlycontinue" #Ne pas afficher les erreurs et continuer en cas de problème
#$ErrorActionPreference = "Stop" #Arrêter en cas d'erreur
#$ErrorActionPreference = "Inquire" #Demander quoi faire en cas de problème
#http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/08/hey-scripting-guy-march-8-2010.aspx

#Ajouter -ErrorAction SilentlyContinue au niveau d'un appel n'affecte le comportement en cas d'erreur que lors de cet appel
#Ajouter -ErrorVariable ErrObj permet de récupérer un objet nommé ErrObj qui contient les infos de l'erreur générée
#Get-Content "C:\non-existent folder"
#Get-Content "C:\non-existent folder" -ErrorAction SilentlyContinue
Get-Content "C:\non-existent folder" -ErrorVariable ErrObj -ErrorAction SilentlyContinue

if ($error.Count -ieq 0){
	Write-Host "Tout est Ok"
}
else{
	#Affichage de l'erreur stockée dans $ErrObj
	Write-Host $ErrObj[0]
}

#A l'inverse on aurait pu utiliser : Si il y a une erreur :
#if($Error.Count -ne 0) {
#}
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
Scripting GuyGestion des erreurs par les Scripting Guy
Technet about_Preference_VariablesArticle Technet sur about_Preference_Variables

Article(s) précédent(s)

2