FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Maîtrisez la gestion des erreurs PowerShell : guide expert et pratique

PowerShell surpasse l'invite de commandes Windows classique par sa puissance, mais cette force s'accompagne d'erreurs plus complexes. Lorsque votre script échoue sans raison apparente, la gestion des erreurs devient essentielle pour diagnostiquer et corriger rapidement.

Si vous maîtrisez d'autres langages, les bases vous sont familières, mais PowerShell présente des spécificités. Elle repose sur quatre piliers : le paramètre -ErrorAction, les blocs Try/Catch, la variable d'erreur et la journalisation.

Gestion des erreurs PowerShell : la méthode simple

Première étape : contrôlez les erreurs qui stoppent votre script. Si l'échec n'impacte pas la suite, demandez à PowerShell d'ignorer et de continuer.

Certaines cmdlets génèrent des erreurs non bloquantes, risquant des résultats erronés. Le paramètre -ErrorAction force le comportement désiré, ajouté en fin de ligne.

Get-ChildItem -Path "~\Documents\*.jpg" -Recurse -ErrorAction Stop

Pour Get-ChildItem isolé, Stop arrête le script pour analyse. Pour plusieurs recherches, optez pour SilentlyContinue afin de poursuivre malgré l'échec.

Get-ChildItem -Path "~\Documents\*.jpg" -Recurse -ErrorAction SilentlyContinue

Pour un contrôle interactif, utilisez Inquire : PowerShell propose Oui, Oui à tous, Arrêter, Suspendre ou Aide.

Maîtrisez la gestion des erreurs PowerShell : guide expert et pratique

Idéal pour des tâches courtes, mais évitez pour des scripts automatisés overnight.

Gestion des erreurs PowerShell : la méthode avancée

-ErrorAction gère les cas simples. Pour plus de contrôle, utilisez Try/Catch.

Maîtrisez la gestion des erreurs PowerShell : guide expert et pratique

Le bloc Try contient votre code normal avec -ErrorAction Stop pour déclencher Catch.

Try {
  Get-Process "Cortana" -ErrorAction Stop
}

Try bloque la suite en cas d'échec, protégeant les cmdlets dépendantes.

Dans Catch, définissez l'action corrective.

Catch {
  Write-Host "Processus introuvable"
}

Catch excelle pour des actions complexes comme l'envoi d'emails. Ajoutez Finally pour un code toujours exécuté.

La variable d'erreur et la journalisation

Pour enquêter post-exécution, utilisez -ErrorVariable vers une variable personnalisée, alternative à $Error globale.

Définissez d'abord la variable, sans $ dans le paramètre.

Get-ChildItem -Path "~\Documents\*.jpg" -Recurse -ErrorAction Continue -ErrorVariable SearchError

Un + accumule les erreurs. Combinez avec Try/Catch pour logs horodatés.

Maîtrisez la gestion des erreurs PowerShell : guide expert et pratique

Créez un fichier log :

$SearchLog = New-Item "~\SearchLog.txt" -ItemType File -ErrorAction SilentlyContinue

Loggez dans Catch :

Try {
  Get-ChildItem -Path "~\Documents\*.jpg" -Recurse -ErrorAction Stop -ErrorVariable SearchError
}
Catch {
  Add-Content -Path $SearchLog -Value "$(Get-Date -Format dd-MM-yy-HH_mm_ss) Fichiers non trouvés : $SearchError"
}

Ajoutez des logs de succès en fin de Try. Votre script est désormais traçable.

PowerShell n'est pas votre unique option

PowerShell excelle en maintenance Windows, mais pour d'autres tâches, explorez Bash via WSL sur Windows 10.

[]