Comment obtenir le code de sortie de Start-Process dans PowerShell

  1. Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en utilisant le paramètre -Wait
  2. Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en vérifiant la variable $LastExitCode
  3. Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en utilisant un objet processus
  4. Conclusion
Comment obtenir le code de sortie de Start-Process dans PowerShell

Dans PowerShell, le cmdlet Start-Process est utilisé pour lancer de nouveaux processus, mais obtenir le code de sortie d’un processus démarré avec cette commande n’est pas simple. Le code de sortie représente l’état du processus après son achèvement, et il peut être précieux pour des fins de script ou pour déterminer si le processus a réussi.

Dans cet article, nous explorerons des façons d’obtenir le code de sortie d’un processus initié en utilisant Start-Process dans PowerShell.

Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en utilisant le paramètre -Wait

Avant de plonger dans la façon de récupérer le code de sortie en utilisant le paramètre -Wait, discutons brièvement des codes de sortie. Un code de sortie est une valeur numérique qu’un processus renvoie une fois terminé.

Conventionnellement, un code de sortie de 0 indique une exécution réussie, tandis que les codes de sortie non nuls représentent des erreurs ou des conditions spécifiques définies par l’application ou le script exécuté.

Le paramètre -Wait dans le cmdlet Start-Process indique à PowerShell d’attendre que le processus démarré soit terminé avant de continuer avec le script. Cela est crucial pour obtenir le code de sortie du processus.

Explorons une approche étape par étape pour y parvenir :

  • Pour démarrer un processus et attendre qu’il se termine à l’aide du paramètre -Wait, utilisez la syntaxe suivante :
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait
    

    Remplacez "YourExecutable.exe" par le chemin vers l’exécutable ou le script que vous souhaitez exécuter et "YourArguments" par les arguments requis par le processus.

  • Pour capturer le processus et son code de sortie, enregistrez la commande Start-Process dans une variable :
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThru
    

    Le paramètre -PassThru permet de sauvegarder l’objet processus dans la variable $process.

  • Une fois le processus terminé, vous pouvez accéder à son code de sortie en utilisant la propriété ExitCode de l’objet processus stocké dans la variable :
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    Le cmdlet Write-Host est utilisé pour afficher le code de sortie obtenu dans la console.

En utilisant le paramètre -Wait et en accédant à la propriété ExitCode, vous pouvez récupérer avec succès le code de sortie d’un processus initié à l’aide de Start-Process dans PowerShell.

Voici un exemple de script qui illustre les étapes mentionnées ci-dessus :

# Start the process and wait for it to complete
$process = Start-Process -FilePath "notepad.exe" -NoNewWindow -Wait -PassThru

# Retrieve the exit code
$exitCode = $process.ExitCode
Write-Host "Exit code: $exitCode"

Dans cet exemple, nous démarrons l’application Notepad, attendons qu’elle se termine, puis obtenons et affichons le code de sortie.

Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en vérifiant la variable $LastExitCode

PowerShell stocke automatiquement le code de sortie du processus exécuté le plus récemment dans la variable $LastExitCode. Cette variable peut être accédée après qu’un processus a été démarré à l’aide de Start-Process.

Voici une approche étape par étape pour utiliser $LastExitCode :

  • Commencez par démarrer le processus souhaité en utilisant le cmdlet Start-Process. Voici une syntaxe générique :
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow
    

    Remplacez "YourExecutable.exe" par le chemin vers l’exécutable ou le script que vous souhaitez exécuter et "YourArguments" par les arguments requis par le processus.

  • Après que le processus soit terminé, accédez au code de sortie en utilisant la variable $LastExitCode :
    $exitCode = $LastExitCode
    Write-Host "Exit code: $exitCode"
    

    Le cmdlet Write-Host est utilisé pour afficher le code de sortie dans la console.

En utilisant la variable $LastExitCode, vous pouvez récupérer facilement le code de sortie d’un processus initié à l’aide de Start-Process dans PowerShell.

Voici un exemple de script complet qui illustre les étapes ci-dessus :

# Start the process
Start-Process -FilePath "notepad.exe" -NoNewWindow

# Access the exit code
$exitCode = $LastExitCode
Write-Host "Exit code: $exitCode"

Dans cet exemple, nous démarrons l’application Notepad puis accédons et affichons le code de sortie en utilisant $LastExitCode.

Obtenir le code de sortie à partir de la commande Start-Process dans PowerShell en utilisant un objet processus

Lors de l’utilisation du paramètre -PassThru avec Start-Process, le cmdlet retourne un objet System.Diagnostics.Process représentant le processus nouvellement démarré. Vous pouvez ensuite accéder au code de sortie en utilisant la propriété ExitCode de cet objet.

Voici une approche étape par étape pour y parvenir :

  • Démarrez le processus souhaité et capturez l’objet processus en utilisant le paramètre -PassThru :
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -PassThru
    

    Remplacez "YourExecutable.exe" par le chemin vers l’exécutable ou le script que vous souhaitez exécuter et "YourArguments" par les arguments requis par le processus.

  • Si nécessaire, attendez que le processus se termine en utilisant la méthode WaitForExit() :
    $process.WaitForExit()
    

    Cette étape garantit que le script attend que le processus se termine avant de continuer.

  • Une fois le processus terminé, accédez à son code de sortie en utilisant la propriété ExitCode :
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    Le cmdlet Write-Host est utilisé pour afficher le code de sortie dans la console.

En utilisant un objet processus et en accédant à la propriété ExitCode, vous pouvez récupérer avec succès le code de sortie d’un processus initié à l’aide de Start-Process dans PowerShell.

Voici un exemple de script complet qui illustre les étapes mentionnées ci-dessus :

# Start the process and obtain a process object
$process = Start-Process -FilePath "notepad.exe" -NoNewWindow -PassThru

# Wait for the process to complete
$process.WaitForExit()

# Access the exit code
$exitCode = $process.ExitCode
Write-Host "Exit code: $exitCode"

Dans cet exemple, nous démarrons l’application Notepad, attendons qu’elle se termine, puis obtenons et affichons le code de sortie en utilisant l’objet processus.

Conclusion

Obtenir le code de sortie d’un processus démarré avec le cmdlet Start-Process dans PowerShell peut être réalisé en utilisant le paramètre -Wait, la variable $LastExitCode, ou en accédant à la propriété ExitCode de l’objet System.Diagnostics.Process.

Comprendre comment récupérer le code de sortie vous permet de gérer et de répondre de manière programmatique aux résultats des processus, améliorant ainsi l’automatisation et la fiabilité de vos scripts PowerShell.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Auteur: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn