1
votes

comment obtenir le $ lastexitcode du fichier exe qui a démarré de PowerShell

  • 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 sur null .

    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.


0 commentaires

3 Réponses :


0
votes

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%


0 commentaires

0
votes

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


1 commentaires

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.



0
votes

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.


0 commentaires