HOWTO · PowerShell

Como obter o código de saída do Start-Process no PowerShell

Este artigo explicará como obter o código de saída após executar um script com o cmdlet start-process.

No PowerShell, o cmdlet Start-Process é usado para iniciar novos processos, mas obter o código de saída de um processo iniciado com este comando não é simples. O código de saída representa o status do processo após sua conclusão e pode ser valioso para fins de script ou para determinar se o processo foi bem-sucedido.

Neste artigo, exploraremos maneiras de obter o código de saída de um processo iniciado com Start-Process no PowerShell.

Obter o Código de Saída do Comando Start-Process no PowerShell Usando o Parâmetro -Wait

Antes de nos aprofundarmos em como recuperar o código de saída usando o parâmetro -Wait, vamos discutir brevemente o que são códigos de saída. Um código de saída é um valor numérico que um processo retorna ao ser concluído.

Convenionalmente, um código de saída 0 indica execução bem-sucedida, enquanto códigos de saída diferentes de zero representam erros ou condições específicas definidas pela aplicação ou script executado.

O parâmetro -Wait no cmdlet Start-Process instrui o PowerShell a aguardar a conclusão do processo iniciado antes de continuar com o script. Isso é crucial para obter o código de saída do processo.

Vamos explorar uma abordagem passo a passo para alcançar isso:

  • Para iniciar um processo e aguardar sua conclusão usando o parâmetro -Wait, use a seguinte sintaxe:
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait
    

    Substitua "YourExecutable.exe" pelo caminho para o executável ou script que você deseja executar e "YourArguments" por quaisquer argumentos necessários ao processo.

  • Para capturar o processo e seu código de saída, armazene o comando Start-Process em uma variável:
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -Wait -PassThru
    

    O parâmetro -PassThru permite que o objeto do processo seja salvo na variável $process.

  • Uma vez que o processo seja concluído, você pode acessar seu código de saída usando a propriedade ExitCode do objeto do processo armazenado na variável:
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    O cmdlet Write-Host é usado para exibir o código de saída obtido no console.

Ao empregar o parâmetro -Wait e acessar a propriedade ExitCode, você pode recuperar com sucesso o código de saída de um processo iniciado usando Start-Process no PowerShell.

Aqui está um exemplo de script que ilustra os passos mencionados acima:

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

Neste exemplo, iniciamos o aplicativo Bloco de Notas, aguardamos sua conclusão e, em seguida, obtemos e exibimos o código de saída.

Obter o Código de Saída do Comando Start-Process no PowerShell Verificando a Variável $LastExitCode

O PowerShell armazena automaticamente o código de saída do processo executado mais recentemente na variável $LastExitCode. Esta variável pode ser acessada após um processo ser iniciado usando Start-Process.

Aqui está uma abordagem passo a passo para utilizar $LastExitCode:

  • Comece iniciando o processo desejado usando o cmdlet Start-Process. Aqui está uma sintaxe genérica:
    Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow
    

    Substitua "YourExecutable.exe" pelo caminho para o executável ou script que você deseja executar e "YourArguments" por quaisquer argumentos necessários ao processo.

  • Após a conclusão do processo, acesse o código de saída usando a variável $LastExitCode:
    $exitCode = $LastExitCode
    Write-Host "Exit code: $exitCode"
    

    O cmdlet Write-Host é usado para exibir o código de saída no console.

Ao aproveitar a variável $LastExitCode, você pode recuperar facilmente o código de saída de um processo iniciado usando Start-Process no PowerShell.

Abaixo está um exemplo abrangente de script que ilustra os passos acima:

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

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

Neste exemplo, iniciamos o aplicativo Bloco de Notas e, em seguida, acessamos e exibimos o código de saída usando $LastExitCode.

Obter o Código de Saída do Comando Start-Process no PowerShell Usando um Objeto de Processo

Ao usar o parâmetro -PassThru com Start-Process, o cmdlet retorna um objeto System.Diagnostics.Process que representa o processo recém-iniciado. Você pode então acessar o código de saída usando a propriedade ExitCode deste objeto.

Aqui está uma abordagem passo a passo para alcançar isso:

  • Inicie o processo desejado e capture o objeto do processo usando o parâmetro -PassThru:
    $process = Start-Process -FilePath "YourExecutable.exe" -ArgumentList "YourArguments" -NoNewWindow -PassThru
    

    Substitua "YourExecutable.exe" pelo caminho para o executável ou script que você deseja executar e "YourArguments" por quaisquer argumentos necessários ao processo.

  • Se necessário, aguarde a conclusão do processo usando o método WaitForExit():
    $process.WaitForExit()
    

    Esta etapa garante que o script aguarde a finalização do processo antes de prosseguir.

  • Uma vez que o processo seja concluído, acesse seu código de saída usando a propriedade ExitCode:
    $exitCode = $process.ExitCode
    Write-Host "Exit code: $exitCode"
    

    O cmdlet Write-Host é usado para exibir o código de saída no console.

Ao aproveitar um objeto de processo e acessar a propriedade ExitCode, você pode recuperar com sucesso o código de saída de um processo iniciado usando Start-Process no PowerShell.

Aqui está um script abrangente que ilustra os passos mencionados acima:

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

Neste exemplo, iniciamos o aplicativo Bloco de Notas, aguardamos sua conclusão e, em seguida, obtemos e exibimos o código de saída usando o objeto do processo.

Conclusão

Obter o código de saída de um processo iniciado com o cmdlet Start-Process no PowerShell pode ser feito usando o parâmetro -Wait, a variável $LastExitCode ou acessando a propriedade ExitCode do objeto System.Diagnostics.Process.

Entender como recuperar o código de saída permite que você manipule e responda programaticamente aos resultados dos processos, aprimorando a automação e a confiabilidade de seus scripts PowerShell.