HOWTO · PowerShell

Come ottenere il codice di uscita da Start-Process in PowerShell

Questo articolo spiegherà come ottenere il codice di uscita dopo aver eseguito uno script con il cmdlet start-process.

In questa pagina

In PowerShell, il cmdlet Start-Process viene utilizzato per avviare nuovi processi, ma ottenere il codice di uscita di un processo avviato con questo comando non è semplice. Il codice di uscita rappresenta lo stato del processo dopo che è stato completato e può essere prezioso per scopi di scripting o per determinare se il processo ha avuto successo.

In questo articolo, esploreremo i modi per ottenere il codice di uscita da un processo avviato utilizzando Start-Process in PowerShell.

Ottieni il Codice di Uscita dal Comando Start-Process in PowerShell Utilizzando il Parametro -Wait

Prima di entrare nei dettagli di come recuperare il codice di uscita utilizzando il parametro -Wait, discutiamo brevemente cosa sono i codici di uscita. Un codice di uscita è un valore numerico che un processo restituisce al termine.

Convenzionalmente, un codice di uscita di 0 indica un’esecuzione riuscita, mentre i codici di uscita diversi da zero rappresentano errori o condizioni specifiche definite dall’applicazione o dallo script eseguito.

Il parametro -Wait nel cmdlet Start-Process istruisce PowerShell ad attendere il completamento del processo avviato prima di continuare con lo script. Questo è cruciale per ottenere il codice di uscita del processo.

Esploriamo un approccio passo dopo passo per raggiungere questo obiettivo:

  • Per avviare un processo e attendere il suo completamento utilizzando il parametro -Wait, utilizza la seguente sintassi:
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait
    

    Sostituisci "YourExecutable.exe" con il percorso dell’eseguibile o dello script che desideri eseguire e "YourArguments" con eventuali argomenti richiesti dal processo.

  • Per catturare il processo e il suo codice di uscita, memorizza il comando Start-Process in una variabile:
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThru
    

    Il parametro -PassThru consente di salvare l’oggetto processo nella variabile $process.

  • Una volta completato il processo, puoi accedere al suo codice di uscita utilizzando la proprietà ExitCode dell’oggetto processo memorizzato nella variabile:
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    Il cmdlet Write-Host viene utilizzato per visualizzare il codice di uscita ottenuto nella console.

Utilizzando il parametro -Wait e accedendo alla proprietà ExitCode, puoi recuperare con successo il codice di uscita di un processo avviato utilizzando Start-Process in PowerShell.

Ecco uno script di esempio che illustra i passaggi sopra menzionati:

# 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"

In questo esempio, avviamo l’applicazione Notepad, aspettiamo che si completi e poi otteniamo e visualizziamo il codice di uscita.

Ottieni il Codice di Uscita dal Comando Start-Process in PowerShell Controllando la Variabile $LastExitCode

PowerShell memorizza automaticamente il codice di uscita dell’ultimo processo eseguito nella variabile $LastExitCode. Questa variabile può essere accessibile dopo che un processo è stato avviato utilizzando Start-Process.

Ecco un approccio passo-passo per utilizzare $LastExitCode:

  • Inizia avviando il processo desiderato utilizzando il cmdlet Start-Process. Ecco una sintassi generica:
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow
    

    Sostituisci "YourExecutable.exe" con il percorso dell’eseguibile o dello script che desideri eseguire e "YourArguments" con eventuali argomenti richiesti dal processo.

  • Dopo che il processo è completato, accedi al codice di uscita utilizzando la variabile $LastExitCode:
    $exitCode = $LastExitCode
    Write-Host "Exit code: $exitCode"
    

    Il cmdlet Write-Host viene utilizzato per visualizzare il codice di uscita nella console.

Sfruttando la variabile $LastExitCode, puoi recuperare senza sforzo il codice di uscita di un processo avviato utilizzando Start-Process in PowerShell.

Di seguito è riportato un esempio completo di script che illustra i passaggi sopra:

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

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

In questo esempio, avviamo l’applicazione Notepad e poi accediamo e visualizziamo il codice di uscita utilizzando $LastExitCode.

Ottieni il Codice di Uscita dal Comando Start-Process in PowerShell Utilizzando un Oggetto Processo

Quando utilizzi il parametro -PassThru con Start-Process, il cmdlet restituisce un oggetto System.Diagnostics.Process che rappresenta il processo appena avviato. Puoi quindi accedere al codice di uscita utilizzando la proprietà ExitCode di questo oggetto.

Ecco un approccio passo-passo per raggiungere questo obiettivo:

  • Avvia il processo desiderato e cattura l’oggetto processo utilizzando il parametro -PassThru:
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -PassThru
    

    Sostituisci "YourExecutable.exe" con il percorso dell’eseguibile o dello script che desideri eseguire e "YourArguments" con eventuali argomenti richiesti dal processo.

  • Se necessario, attendi che il processo si completi utilizzando il metodo WaitForExit():
    $process.WaitForExit()
    

    Questo passaggio assicura che lo script attenda il completamento del processo prima di procedere.

  • Una volta completato il processo, accedi al suo codice di uscita utilizzando la proprietà ExitCode:
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    Il cmdlet Write-Host viene utilizzato per visualizzare il codice di uscita nella console.

Sfruttando un oggetto processo e accedendo alla proprietà ExitCode, puoi recuperare con successo il codice di uscita di un processo avviato utilizzando Start-Process in PowerShell.

Ecco un esempio completo di script che illustra i passaggi sopra menzionati:

# 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"

In questo esempio, avviamo l’applicazione Notepad, attendiamo che si completi e poi otteniamo e visualizziamo il codice di uscita utilizzando l’oggetto processo.

Conclusione

Ottenere il codice di uscita da un processo avviato con il cmdlet Start-Process in PowerShell può essere realizzato utilizzando il parametro -Wait, la variabile $LastExitCode, oppure accedendo alla proprietà ExitCode dell’oggetto System.Diagnostics.Process.

Comprendere come recuperare il codice di uscita consente di gestire e rispondere programmaticamente ai risultati dei processi, migliorando l’automazione e l’affidabilità dei tuoi script PowerShell.