Как записать сообщения об ошибках из команды, запущенной 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 есть кавычки.