Cómo obtener el código de salida de Start-Process en PowerShell

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

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:
    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:
    $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:
    $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:

# 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:
    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:
    $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:

# 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:
    $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():
    $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:
    $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:

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

¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete
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