如何从文本文件中的 PowerShell 启动命令捕获错误消息?
我在 Internet 上搜索了一段时间,发现我应该能够执行类似""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 会捕获正确的输出。
我查看了Redirect stderr to variable in powershell但它没有帮助,因为该问题的答案建议捕获整个输出并在内存中过滤它。就我而言,我正在备份计算机上的每个数据库,并且由于数据库不适合我笔记本电脑的内存,所以我无法使用问题的解决方案。
我还发现了关于使用的诱人建议,$err = @(command goes here)
但除了简单地插入该行文本之外,没有关于该做什么的信息。我尝试在 Serverfault 上使用字符串“ @()
”的搜索功能,但它没有返回任何结果。
我该怎么做才能将错误消息放入 errors.txt?
正如 jscott 指出的那样,该命令有效。我只是忘了添加足够多的反引号。
那么解决方案是确保在 cmd /c 之后的整行文本周围有引号。