A opção -d
, conforme mencionada na descrição citada na sua pergunta, faz com que o PsExec não espere a saída do novo processo. Você não pode obter nenhum código de saída ou saída porque o serviço PsExec remoto apenas inicia o processo, informa o novo ID do processo para o programa PsExec original e para de se preocupar com o que o novo processo faz. Sem -d
, toda a saída do processo será enviada de volta ao programa PsExec que iniciou tudo, e o PsExec terá que esperar que o novo processo seja encerrado para que ele possa saber quando sair sozinho.
O PsExec não jogar bem com redirecionamento ou PowerShell . Consegui obter saída parcial lançando a instância inicial do PowerShell com o parâmetro -inputformat none
, mas o PsExec cortou estranhamente parte da saída do comando e não consegui contorná-la.
Você pode tentar remoting do PowerShell em vez disso:
Invoke-Command {type $file} -ComputerName $hostname -Credential (New-Object PSCredential -ArgumentList 'username', (ConvertTo-SecureString 'password' -AsPlainText -Force))