使用PowerShell将stderror写入文件

如何从文本文件中的PowerShell启动的命令中捕获错误消息?

search了一下互联网,发现应该可以像""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捕获正确的输出。

我看着redirectstderr到PowerShell中的variables,但它没有帮助,因为这个问题的答案build议捕获整个输出,并在内存中过滤。 在我的情况下,我正在备份计算机上的每个数据库,由于数据库不适合我的笔记本电脑的RAM,我不能使用问题的解决scheme。

我还发现了有关使用$err = @(command goes here)但除了插入该行文本之外没有任何其他信息。 我尝试使用string“ @() ”的Serverfault上的searchfunction,但它没有返回任何结果。

我能做些什么来获取error.txt的错误信息?

正如jscott指出的那样,这个命令起作用。 我只是忘了添加足够多的引号。

那么解决scheme是确保在cmd / c之后的整行文本周围有引号。