Je tente de lancer un programme à partir de PowerShell, d'attendre la sortie, puis d'accéder à ExitCode, mais je n'ai pas beaucoup de chance. Je ne veux pas utiliser -Wait
avec Start-Process
, car j'ai besoin que certains traitements se déroulent en arrière-plan.
Voici un script de test simplifié :
cd "C:\Windows"
# ExitCode est disponible lors de l'utilisation de -Wait...
Write-Host "Démarrage de Notepad avec -Wait - le code de retour sera disponible"
$process = (Start-Process -FilePath "notepad.exe" -PassThru -Wait)
Write-Host "Le processus s'est terminé avec le code de retour : " $process.ExitCode
# ExitCode n'est pas disponible lors de l'attente séparée
Write-Host "Démarrage de Notepad sans -Wait - le code de retour NE sera PAS disponible"
$process = (Start-Process -FilePath "notepad.exe" -PassThru)
$process.WaitForExit()
Write-Host "Le code de sortie du processus devrait être ici : " $process.ExitCode
Exécuter ce script va provoquer le démarrage de Notepad. Après sa fermeture manuelle, le code de sortie sera affiché, puis il redémarrera, sans utiliser -wait
. Aucun ExitCode n'est fourni lorsque cela est quitté :
Démarrage de Notepad avec -Wait - le code de retour sera disponible
Le processus s'est terminé avec le code de retour : 0
Démarrage de Notepad sans -Wait - le code de retour NE sera PAS disponible
Le code de sortie du processus devrait être ici :
J'ai besoin de pouvoir effectuer des traitements supplémentaires entre le démarrage du programme et l'attente de sa fin, donc je ne peux pas utiliser -Wait
. Comment puis-je faire cela tout en ayant toujours accès à la propriété .ExitCode de ce processus ?