Powershell - Différence entre $? et $LASTEXITCODE

Pour me soutenir, vous pouvez vous abonner à la chaîne, partager et liker les vidéos, désactiver votre bloqueur de pub ou encore faire un don. Merci!

Bonjour,

Un nouvel article Powershell sur la différence entre les variables automatiques $? et $LASTEXITCODE

$LASTEXITCODE contient le code de sortie du dernier programme natif qui a été exécuté (0 indiquant que tout s’est bien déroulé, une autre valeur indique un problème)

$? contient le statut réussite/échec de la dernière déclaration (programme natif ou Powershell) : $true ou $false

Démonstration avec le code suivant :

# Sélectionnez et exécutez tout le code
# Test commande native OK
$null = ping localhost -n 1
"Commande native OK `$? {0,15} " -f $?
"Commande native OK `$LASTEXITCODE {0} " -f $LASTEXITCODE
# Test commande native KO
$null = ping demo -n 1
"Commande native KO `$? {0,16} " -f $?
"Commande native KO `$LASTEXITCODE {0} " -f $LASTEXITCODE
# Test commande Powershell OK
$null = Test-Connection localhost -Count 1
"Commande Powershell OK `$? {0,15} " -f $?
"Commande Powershell OK `$LASTEXITCODE {0} " -f $LASTEXITCODE
# Test commande Powershell KO
$null = Test-Connection demo -Count 1 -ErrorAction SilentlyContinue
"Commande Powershell KO `$?{0,17} " -f $?
"Commande Powershell KO `$LASTEXITCODE {0} " -f $LASTEXITCODE

On voit apparaître : Commande Powershell OK  $LASTEXITCODE 1

$LASTEXITCODE n’a pas été modifié dans le cas de la commande Powershell, la valeur 1 étant le code de sortie de ping demo -n 1.

Je ne peux donc pas utiliser $LASTEXITCODE pour vérifier la bonne exécution d’une commande Powershell, uniquement les commandes natives.

$? Réagit correctement pour les commandes natives et Powershell.

Liens en relation