Назад | Перейти на главную страницу

Записать stderr в файл с помощью PowerShell

Как записать сообщения об ошибках из команды, запущенной PowerShell, в текстовый файл?

Я поискал в Интернете какое-то время и обнаружил, что, предположительно, я смогу сделать что-то вроде ""C:\UniServer\usr\local\mysql\bin\mysqldump.exe" -h 192.0.2.0 -u"backup" -p"longComplicatedPassword" --all-databases >"C:\Users\Zian\MySQL Database Backups\20130118221525.sql" 2>"C:\users\zian\desktop\MySQL Backup Error.txt"" чтобы направить вывод в output.txt, а ошибки в errors.txt, но когда я пытаюсь запустить команду, я получаю следующую ошибку:

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

Более того, если я попытаюсь запустить команду без того, чтобы все начиналось с «2», то команда выполняется правильно, и output.txt улавливает правильный вывод.

я смотрел на Перенаправить stderr в переменную в PowerShell но это было бесполезно, потому что ответ на этот вопрос предполагает захват всего вывода и фильтрацию его в памяти. В моем случае я создаю резервную копию каждой базы данных на компьютере, и поскольку базы данных не помещаются в оперативную память моего ноутбука, я не могу использовать решение вопроса.

Я также нашел дразнящие предложения по использованию $err = @(command goes here) но без информации о том, что делать, кроме как просто вставить эту строку текста. Я попытался использовать функцию поиска на Serverfault со строкой "@()", но он не дал никаких результатов.

Что я могу сделать, чтобы сообщения об ошибках помещались в errors.txt?

Как указал jscott, команда работает. Я просто забыл добавить достаточно кавычек с обратной галочкой.

Тогда решение состоит в том, чтобы убедиться, что вокруг всей строки текста после cmd / c есть кавычки.