LastExitCode dans PowerShell
-
Utilisation de
$?
dans un environnement PowerShell -
$LastExitCode
comme gestionnaire d’erreurs dans PowerShell - Conclusion

Comprendre les subtilités de la gestion des erreurs dans PowerShell est essentiel pour un scripting efficace. Parmi les divers outils disponibles, $LastExitCode
se distingue comme un mécanisme puissant pour capturer le code de sortie des commandes externes.
Cet article examine l’utilisation nuancée de $LastExitCode
, explorant son application dans différents scénarios, de la vérification des erreurs de base à l’exécution dynamique de commandes. En maîtrisant $LastExitCode
, les utilisateurs de PowerShell peuvent améliorer la robustesse et la fiabilité de leurs scripts.
Utilisation de $?
dans un environnement PowerShell
Il est important de comprendre la commande $?
avant de l’utiliser ici. Dans PowerShell, $?
est une variable automatique qui aide à déterminer le succès ou l’échec de la dernière opération et peut être utilisée comme un gestionnaire d’erreurs.
Basé sur la dernière commande exécutée, il renvoie une valeur booléenne, True
ou False
. Si la dernière commande exécutée dans le script est réussie, elle renvoie true
; sinon, elle renvoie false
.
Une exécution de cette commande est montrée dans le code d’exécution ci-dessous.
Remove-Item -Path "example.txt"
if ($?) {
Write-Host "File removed successfully."
}
else {
Write-Host "Failed to remove file."
}
Dans cet exemple, nous essayons d’abord de supprimer un fichier nommé example.txt
. Après avoir exécuté la commande Remove-Item
, nous utilisons la variable $?
dans l’instruction if
pour vérifier si l’opération a réussi.
Si $?
évalue à True
, nous affichons un message de succès; sinon, nous affichons un message d’échec.
Il y a une différence entre $lastexitcode
et $?
. Cependant, il est également utilisé pour la gestion des erreurs.
$LastExitCode
comme gestionnaire d’erreurs dans PowerShell
Il y a une différence dans la gestion des erreurs utilisée lorsque la commande est interne et lorsque la commande est externe.
Vous utiliserez $lastexitcode
lorsque la commande est externe. Cela est dû au fait que cette commande s’applique uniquement aux scripts et commandes externes.
Le but principal de $LastExitCode
est de fournir un retour sur le succès ou l’échec des commandes externes exécutées dans une session PowerShell. En accédant à $LastExitCode
, les utilisateurs peuvent déterminer si la dernière commande exécutée a réussi ou a rencontré une erreur.
Exemple :
# Execute an external command (ping)
ping example.test
# Check the value of $LastExitCode
$exitCode = $LastExitCode
# Output the exit code
Write-Host "Exit code: $exitCode"
Dans cet exemple, nous tentons de pinger un hôte nommé example.test
. Après avoir exécuté la commande ping
, nous stockons la valeur de $LastExitCode
dans une variable nommée $exitCode
.
Enfin, nous affichons le code de sortie en utilisant le cmdlet Write-Host
. Cette approche nous permet d’accéder et d’utiliser le code de sortie de la dernière commande exécutée directement dans notre script PowerShell.
Sortie :
$LastExitCode
avec Invoke-Expression
comme gestionnaire d’erreurs dans PowerShell
Dans PowerShell, le cmdlet Invoke-Expression
permet l’exécution de commandes ou de scripts stockés dans des variables de chaîne. Lorsqu’il est combiné avec $LastExitCode
, il fournit un moyen de capturer le code de sortie des commandes exécutées de manière dynamique.
Exemple :
# Define a command as a string
$command = "ping example.test"
# Execute the command using Invoke-Expression
Invoke-Expression -Command $command
# Capture the exit code using $LastExitCode
$exitCode = $LastExitCode
# Output the exit code
Write-Host "Exit code: $exitCode"
Dans cet exemple, nous définissons une commande (ping example.test
) comme une variable de chaîne $command
. Nous utilisons ensuite Invoke-Expression
pour exécuter la commande stockée dans le $command
.
Après exécution, nous capturons le code de sortie en utilisant $LastExitCode
et le stockons dans la variable $exitCode
. Enfin, nous affichons le code de sortie à la console.
Sortie :
Lorsque le script précédent était true
, la sortie de $LastExitCode
serait toujours 0.
Mais, lorsqu’il est infructueux, cela serait 1 ou tout autre entier renvoyé par le script externe parce que la commande $LastExitCode
n’est pas binaire, contrairement à la commande $?
.
$LastExitCode
avec des vérifications conditionnelles comme gestionnaire d’erreurs dans PowerShell
Les instructions conditionnelles nous permettent de prendre des décisions basées sur le succès ou l’échec des commandes dans un script PowerShell. Voyons comment nous pouvons tirer parti de $LastExitCode
dans ces instructions pour implémenter une gestion robuste des erreurs et une logique conditionnelle.
Exemple :
# Execute an external command (ping)
ping example.test
# Check the value of $LastExitCode
if ($LastExitCode -eq $null) {
Write-Host "No exit code available. An external command might not have been executed."
}
else {
Write-Host "Exit code: $LastExitCode"
}
Dans cet exemple, nous tentons de pinger un hôte nommé example.test
. Après avoir exécuté la commande ping
, nous vérifions la valeur de $LastExitCode
.
Si $LastExitCode
est nul, cela indique que la commande ping
n’a peut-être pas été exécutée, probablement à cause d’un nom d’hôte invalide ou d’un problème de réseau. Sinon, nous imprimons le code de sortie, fournissant un aperçu du succès ou de l’échec de la commande ping
.
Sortie :
Conclusion
Cet article a fourni un aperçu complet de l’utilisation de $LastExitCode
comme gestionnaire d’erreurs dans le scripting PowerShell. Nous avons exploré son utilisation dans divers contextes, y compris la vérification des erreurs de base avec $?
, la gestion des erreurs pour des commandes externes avec $LastExitCode
, l’exécution dynamique de commandes avec Invoke-Expression
et des vérifications conditionnelles.
En maîtrisant ces techniques, les utilisateurs de PowerShell peuvent améliorer leurs capacités de scripting, garantissant une détection et une gestion robustes des erreurs dans leurs scripts. Pour approfondir votre compréhension, envisagez d’explorer des sujets avancés tels que la capture d’erreurs et la gestion de scénarios d’erreurs spécifiques.
Avec une solide compréhension des techniques de gestion des erreurs dans PowerShell, vous serez bien équipé pour développer des scripts fiables et résilients pour diverses tâches d’automatisation.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.