Je crée un script PowerShell qui appelle quelques autres travail.
Je veux appeler le fichier exe
et obtenir le $ LASTEXITCODE
du fichier exe
dans un script.
Mais dans mon script, même si
exe
s'est terminé avec erreur ,$ LASTEXITCODE
est toujours défini surnull
.
S'il vous plaît, donnez-moi un avis.
. myjob.exe -param1 $param1 -param2 $param $LASTEXITCODE
lorsque j'exécute ce fichier exe
avec CMD, le code de sortie de collecte est défini % ERRORLEVEL% .
merci.
3 Réponses :
Vous n'avez pas à vous soucier de toute autre valeur que 0 dans le $ LASTEXITCODE. Avoir une validation après l'exécution de EXE comme ceci:
.\myjob.exe -param1 $param1 -param2 $param If($LASTEXITCODE -eq 0) { Write-Host "Execution Successful" } else { Write-Host "Failure in Execution" }
Remarque: $ LASTEXITCODE
contient le code de sortie de la dernière exécution de l'exécutable Win32 qui est équivalent à % ERRORLEVEL%
Si votre exécutable appelle d'autres processus, alors oui, vos erreurs ne seront pas transmises et vous obtiendrez toujours un zéro.
Est-ce que cela fonctionne?
. myjob.exe -param1 $param1 -param2 $param 2>&1 $LASTEXITCODE
Quelle est la différence entre la question des OP et votre réponse à ce sujet. Bien sûr, $ LastExitCode vous indiquera le succès ou l'échec mais comment va-t-il le valider? Que faire si la valeur de la variable est Null? Vérifiez la réponse que j'ai suggérée pour qu'elle gère les deux scénarios. J'espère que cela vous aidera à mieux comprendre.
Merci pour tout le monde qui m'a répondu. Je n'ai pas pu découvrir pourquoi mon script PowerShell ne peut pas obtenir le code de sortie du fichier exe. Mais je pourrais attraper le code de sortie avec le code ci-dessous:
$Process=(Start-Process -FilePath "myjob.exe" -ArgumentList @("-param1",$param1,"-param2",$param) -PassThru -Wait) $Process.ExitCode
merci.