Cómo obtener el código de salida de Start-Process en PowerShell
-
Obtener el Código de Salida del Comando
Start-Process
en PowerShell Usando el Parámetro-Wait
-
Obtener el Código de Salida del Comando
Start-Process
en PowerShell Verificando la Variable$LastExitCode
-
Obtener el Código de Salida del Comando
Start-Process
en PowerShell Usando un Objeto de Proceso - Conclusión

En PowerShell, el cmdlet Start-Process
se utiliza para iniciar nuevos procesos, pero obtener el código de salida de un proceso iniciado con este comando no es sencillo. El código de salida representa el estado del proceso una vez que ha finalizado, y puede ser valioso para propósitos de scripting o para determinar si el proceso fue exitoso.
En este artículo, exploraremos maneras de obtener el código de salida de un proceso iniciado usando Start-Process
en PowerShell.
Obtener el Código de Salida del Comando Start-Process
en PowerShell Usando el Parámetro -Wait
Antes de profundizar en cómo recuperar el código de salida utilizando el parámetro -Wait
, discutamos brevemente qué son los códigos de salida. Un código de salida es un valor numérico que un proceso devuelve al completarse.
Convencionalmente, un código de salida de 0
indica una ejecución exitosa, mientras que los códigos de salida diferentes de cero representan errores o condiciones específicas definidas por la aplicación o script ejecutado.
El parámetro -Wait
en el cmdlet Start-Process
instruye a PowerShell a esperar a que el proceso iniciado se complete antes de continuar con el script. Esto es crucial para obtener el código de salida del proceso.
Exploraremos un enfoque paso a paso para lograr esto:
-
Para iniciar un proceso y esperar a que se complete usando el parámetro
-Wait
, usa la siguiente sintaxis:powershellCopy
Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait
Reemplaza
"YourExecutable.exe"
con la ruta al ejecutable o script que deseas ejecutar y"YourArguments"
con cualquier argumento que el proceso requiera. -
Para capturar el proceso y su código de salida, almacena el comando
Start-Process
en una variable:powershellCopy
$process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThru
El parámetro
-PassThru
permite que el objeto del proceso se guarde en la variable$process
. -
Una vez que el proceso ha finalizado, puedes acceder a su código de salida utilizando la propiedad
ExitCode
del objeto de proceso almacenado en la variable:powershellCopy
$exitCode = $process.ExitCode Write-Host "Exit code: $exitCode"
El cmdlet
Write-Host
se utiliza para mostrar el código de salida obtenido en la consola.
Al emplear el parámetro -Wait
y acceder a la propiedad ExitCode
, puedes recuperar con éxito el código de salida de un proceso iniciado usando Start-Process
en PowerShell.
Aquí hay un script de ejemplo que ilustra los pasos mencionados anteriormente:
powershellCopy# 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"
En este ejemplo, iniciamos la aplicación de Notepad, esperamos a que se complete y luego obtenemos y mostramos el código de salida.
Obtener el Código de Salida del Comando Start-Process
en PowerShell Verificando la Variable $LastExitCode
PowerShell almacena automáticamente el código de salida del proceso ejecutado más recientemente en la variable $LastExitCode
. Esta variable se puede acceder después de que un proceso se inicie usando Start-Process
.
Aquí hay un enfoque paso a paso para utilizar $LastExitCode
:
-
Comienza iniciando el proceso deseado usando el cmdlet
Start-Process
. Aquí hay una sintaxis genérica:powershellCopy
Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow
Reemplaza
"YourExecutable.exe"
con la ruta al ejecutable o script que deseas ejecutar y"YourArguments"
con cualquier argumento que el proceso requiera. -
Después de que el proceso finalice, accede al código de salida usando la variable
$LastExitCode
:powershellCopy
$exitCode = $LastExitCode Write-Host "Exit code: $exitCode"
El cmdlet
Write-Host
se utiliza para mostrar el código de salida en la consola.
Al aprovechar la variable $LastExitCode
, puedes recuperar sin esfuerzo el código de salida de un proceso iniciado usando Start-Process
en PowerShell.
A continuación se muestra un script de ejemplo completo que ilustra los pasos anteriores:
powershellCopy# Start the process
Start-Process -FilePath "notepad.exe" -NoNewWindow
# Access the exit code
$exitCode = $LastExitCode
Write-Host "Exit code: $exitCode"
En este ejemplo, iniciamos la aplicación de Notepad y luego accedemos y mostramos el código de salida usando $LastExitCode
.
Obtener el Código de Salida del Comando Start-Process
en PowerShell Usando un Objeto de Proceso
Al utilizar el parámetro -PassThru
con Start-Process
, el cmdlet devuelve un objeto System.Diagnostics.Process
que representa el proceso recién iniciado. Luego puedes acceder al código de salida usando la propiedad ExitCode
de este objeto.
Aquí hay un enfoque paso a paso para lograr esto:
-
Inicia el proceso deseado y captura el objeto de proceso usando el parámetro
-PassThru
:powershellCopy
$process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -PassThru
Reemplaza
"YourExecutable.exe"
con la ruta al ejecutable o script que deseas ejecutar y"YourArguments"
con cualquier argumento que el proceso requiera. -
Si es necesario, espera a que el proceso se complete usando el método
WaitForExit()
:powershellCopy
$process.WaitForExit()
Este paso asegura que el script espere a que el proceso termine antes de continuar.
-
Una vez que el proceso ha finalizado, accede a su código de salida usando la propiedad
ExitCode
:powershellCopy
$exitCode = $process.ExitCode Write-Host "Exit code: $exitCode"
El cmdlet
Write-Host
se utiliza para mostrar el código de salida en la consola.
Al aprovechar un objeto de proceso y acceder a la propiedad ExitCode
, puedes recuperar con éxito el código de salida de un proceso iniciado usando Start-Process
en PowerShell.
Aquí hay un script de ejemplo completo que ilustra los pasos mencionados anteriormente:
powershellCopy# 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"
En este ejemplo, iniciamos la aplicación de Notepad, esperamos a que se complete y luego obtenemos y mostramos el código de salida usando el objeto de proceso.
Conclusión
Obtener el código de salida de un proceso iniciado con el cmdlet Start-Process
en PowerShell se puede lograr utilizando el parámetro -Wait
, la variable $LastExitCode
, o accediendo a la propiedad ExitCode
del objeto System.Diagnostics.Process
.
Entender cómo recuperar el código de salida te permite manejar y responder programáticamente a los resultados de los procesos, mejorando la automatización y confiabilidad de tus scripts de PowerShell.
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