Como o jscott apontou, o comando funciona. Eu simplesmente esqueci de adicionar aspas o suficiente.
A solução, então, é certificar-se de que há as aspas ao redor da linha inteira do texto após cmd / c.
Como faço para capturar mensagens de erro de um comando iniciado pelo PowerShell em um arquivo de texto?
Eu procurei na Internet por um tempo e descobri que, supostamente, eu deveria ser capaz de fazer algo como ""C:\UniServer\usr\local\mysql\bin\mysqldump.exe" -h 192.0.2.0 -u"backup" -p"longComplicatedPassword" --all-databases >"C:\Users\Zian\MySQL Database Backups130118221525.sql" 2>"C:\users\zian\desktop\MySQL Backup Error.txt""
para direcionar a saída para o output.txt e os erros para o errors.txt, mas quando tento executar o comando, Eu recebo o seguinte erro:
cmd.exe : The filename, directory name, or volume label syntax is incorrect.
At C:\Users\Zian\Desktop\Untitled1.ps1:27 char:4
+ cmd <<<< /c $command
+ CategoryInfo : NotSpecified: (The filename, d...x is incorrect.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Além disso, se eu tentar executar o comando sem tudo a partir de "2", o comando será executado corretamente e o output.txt capturará a saída correta.
Eu olhei para Redirecionar stderr para variável no powershell mas não foi É útil porque a resposta para essa pergunta sugere capturar toda a saída e filtrá-la na memória. No meu caso, estou fazendo backup de todos os bancos de dados de um computador e, como os bancos de dados não cabem na memória RAM do meu laptop, não consigo usar a solução da pergunta.
Também encontrei sugestões tentadoras sobre o uso de $err = @(command goes here)
, mas sem informações sobre o que fazer além de simplesmente inserir essa linha de texto. Tentei utilizar a função de pesquisa no Serverfault com a string " @()
", mas ela não retornou nenhum resultado.
O que posso fazer para colocar as mensagens de erro em errors.txt?
Tags search powershell stderr