Eu tenho um script do PowerShell 1.0 para abrir apenas um monte de aplicativos. O primeiro é uma máquina virtual e os outros são aplicativos de desenvolvimento. Quero que a máquina virtual conclua a inicialização antes que o restante dos aplicativos seja aberto.
Na festança, eu poderia dizer "cmd1 && cmd2"
É isso que eu tenho ...
C:\Applications\VirtualBox\vboxmanage startvm superdooper
&"C:\Applications\NetBeans 6.5\bin\netbeans.exe"
fonte
| out-null
fiz exatamente o que eu precisava. Tentei usarStart-Job
, mas porque eu estou passando os resultados de funções como parâmetros, ele ficou um pouco skitzoid em mim, então eu não poderia usar a última sugestão ...-ArgumentList
, separe-os com vírgulas como-ArgumentList /D=test,/S
.Além de usar
Start-Process -Wait
, canalizar a saída de um executável fará o Powershell esperar. Dependendo da necessidade, eu vou tipicamente tubo paraOut-Null
,Out-Default
,Out-String
ouOut-String -Stream
. Aqui está uma longa lista de outras opções de saída.Sinto falta dos operadores de estilo CMD / Bash que você referenciou (&, &&, ||). Parece que temos que ser mais detalhados com o Powershell .
fonte
Out-String
altera a saída para uma única sequência de várias linhas , enquanto o PowerShell, por padrão, retorna uma matriz de linhas .Start-Process
deve ser evitado para aplicativos de console (a menos que você realmente queira executá-los em uma nova janela ) porque você não poderá capturar ou redirecionar a saída deles.Basta usar "Wait-process":
trabalho está feito
fonte
Se você usar
Start-Process <path to exe> -NoNewWindow -Wait
Você também pode usar a
-PassThru
opção para ecoar a saída.fonte
-PassThru
não ecoa a saída (um aplicativo que não é do console, por definição, não produz saída do console); ele gera umaSystem.Diagnostics.Process
instância que representa o processo recém-iniciado, portanto você pode examinar suas propriedades e aguardar a saída mais tarde.Alguns programas não conseguem processar muito bem o fluxo de saída, usar o pipe para
Out-Null
não bloqueá-lo.E
Start-Process
precisa da-ArgumentList
opção de passar argumentos, não tão conveniente.Há também outra abordagem.
fonte
A inclusão da opção
-NoNewWindow
gera um erro:Start-Process : This command cannot be executed due to the error: Access is denied.
A única maneira de fazê-lo funcionar era ligar para:
fonte
Indo mais longe, você pode até analisar rapidamente
por exemplo
fonte
Sempre há cmd. Pode ser menos irritante se você tiver problemas para citar argumentos para iniciar o processo:
fonte