LastExitCode dans PowerShell

  1. Utilisation de $? dans un environnement PowerShell
  2. $LastExitCode comme gestionnaire d’erreurs dans PowerShell
  3. Conclusion
LastExitCode dans PowerShell

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.

powershell lastexitcode - sortie 1

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 :

powershell lastexitcode - sortie 2

$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 :

powershell lastexitcode - sortie 3

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 :

powershell lastexitcode - sortie 4

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.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.