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 -WaitSostituisci
"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-Processin una variabile:$process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThruIl parametro
-PassThruconsente di salvare l’oggetto processo nella variabile$process. -
Una volta completato il processo, puoi accedere al suo codice di uscita utilizzando la proprietà
ExitCodedell’oggetto processo memorizzato nella variabile:$exitCode = $process.ExitCode Write-Host "Exit code: $exitCode"Il cmdlet
Write-Hostviene 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" -NoNewWindowSostituisci
"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-Hostviene 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 -PassThruSostituisci
"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-Hostviene 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.