In Powershell, how to trap the results of a command to perform specific actions?
Resource about PS error handling techniques:
https://livebook.manning.com/book/powershell-in-depth/chapter-30/22 http://rkeithhill.wordpress.com/2009/08/03/effective-powershell-item-16-dealing-with-errors/
Bonjour, voici quelques exemples avec try catch finally en PowerShell :
- Un premier exemple basique :
try {
# Tenter d'ouvrir un dossier qui n'existe pas
dir "c:\dossier\inexistant"
}
catch {
# Afficher un message personnalisé en cas d'erreur
Write-Host "Le dossier n'existe pas"
}
- Un exemple avec affichage du message d’erreur :
try {
# Tenter d'ouvrir un dossier qui n'existe pas
dir "c:\dossier\inexistant"
}
catch {
# Afficher le message d'erreur généré par PowerShell
Write-Host $_.Exception.Message
}
- Un exemple avec plusieurs blocs catch pour gérer différents types d’erreurs :
try {
# Tenter de diviser par zéro
1/0
}
catch [System.DivideByZeroException] {
# Gérer l'erreur de division par zéro
Write-Host "Vous ne pouvez pas diviser par zéro"
}
catch [System.OverflowException] {
# Gérer l'erreur de dépassement de capacité
Write-Host "Vous avez dépassé la capacité maximale"
}
catch {
# Gérer les autres types d'erreurs
Write-Host "Une erreur inconnue est survenue"
}
- Un exemple avec un bloc finally pour effectuer des actions de nettoyage :
try {
# Ouvrir une connexion à une base de données
$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=localhost;Database=Test;Integrated Security=True;"
$conn.Open()
# Exécuter une requête SQL
$cmd = New-Object System.Data.SqlClient.SqlCommand
$cmd.Connection = $conn
$cmd.CommandText = "SELECT * FROM Table1"
$result = $cmd.ExecuteReader()
}
catch {
# Afficher le message d'erreur en cas de problème
Write-Host $_.Exception.Message
}
finally {
# Fermer la connexion à la base de données dans tous les cas
if ($conn) {
$conn.Close()
Write-Host "Connexion fermée"
}
}
Sources : Microsoft Learn, LazyAdmin, IT-Connect