Eu tenho um script do PowerShell para o qual gostaria de redirecionar a saída para um arquivo. O problema é que não consigo mudar a maneira como esse script é chamado. Então eu não posso fazer:
.\MyScript.ps1 > output.txt
Como redireciono a saída de um script do PowerShell durante sua execução?
powershell
scripting
stdout
Martin
fonte
fonte
A Microsoft anunciou no site do Connections da Powershell (15/02/2012 às 16:40) que na versão 3.0 eles estenderam o redirecionamento como uma solução para esse problema.
Consulte o artigo de ajuda "about_Redirection" para obter detalhes e exemplos.
fonte
Usar:
fonte
Presumo que você pode modificar
MyScript.ps1
. Em seguida, tente alterá-lo da seguinte maneira:Eu apenas tentei isso com o PowerShell 3. Você pode usar todas as opções de redirecionamento, como na resposta de Nathan Hartley .
fonte
*>&1 | Out-File $log -Encoding ascii -Append -Width 132
mas o Powershell é realmente feio se você precisar controlar com precisão a saída.Uma solução possível, se sua situação permitir:
Crie um novo MyScript.ps1 parecido com:
. \ TheRealMyScript.ps1> output.txt
fonte
fonte
Você pode dar uma olhada no Tee-Object do cmdlet . Você pode canalizar a saída para o Tee e ele gravará no pipeline e também em um arquivo
fonte
Se você deseja um redirecionamento direto de toda a saída para um arquivo, tente usar
*>>
:Como esse é um redirecionamento direto para o arquivo, ele não será exibido no console (geralmente útil). Se você deseja a saída do console, combine toda a saída com
*&>1
e, em seguida, canalize comTee-Object
:Acredito que essas técnicas sejam suportadas no PowerShell 3.0 ou posterior; Estou testando no PowerShell 5.0.
fonte
Se você deseja fazê-lo na linha de comando e não incorporado no próprio script, use:
fonte
Para incorporar isso ao seu script, você pode fazer o seguinte:
Isso deve fazer o truque.
fonte