Aqui está o meu problema. Eu executo um aplicativo de linha de comando dentro de um script do PowerShell usando o operador de chamada (ou seja, o símbolo &
), de forma que seja:
& $PathToExe /switch:"lots of args" /anotherswitch:"with more parms" /etc:"$WithAlsoVariables"
Isso funciona bem, na verdade, um pouco bem demais. O processo é chamado, mas o script continuará enquanto o processo ainda estiver em execução. Na maioria das vezes, tudo bem, já que o resto do script não depende da saída deste processo, mas eu preciso limpar depois que o processo terminar.
Eu estava possivelmente olhando para o Start-Process
CmdLet com o parâmetro -wait
, o que, tenho certeza, faria o que eu preciso, mas também diminuiria um pouco as coisas. O EXE pode ser executado em paralelo, embora eu precise saber quando o processo foi concluído. Eu poderia executar um simples Do-While
loop no final, verificando se o processo tinha terminado antes de limpar, mas eu não sei como obter o ID do processo específico para o EXE chamado. Não consigo verificar apenas o nome do processo, pois pode haver outros processos iniciados manualmente com o mesmo nome em execução.
Eu passei um tempo vasculhando algum site (como aqui), mas nada apareceu ainda. Ajuda seria bem vinda.
Eu tentei:
$proc = & $PathToExe /switch:"lots of args" /anotherswitch:"with more parms" /etc:"$WithAlsoVariables"
E, embora o processo comece, os argumentos agora estão incorretos, pois ele pára imediatamente