我有一个PowerShell脚本,我想将输出重定向到一个文件。问题是我不能改变这个脚本的调用方式。所以我不能:

 .\MyScript.ps1 > output.txt

如何重定向PowerShell脚本执行期间的输出?


当前回答

如果你的情况允许,有一个可能的解决方案:

重命名MyScript。ps1到TheRealMyScript.ps1 创建一个新的MyScript。Ps1看起来像: \ TheRealMyScript。Ps1 > output.txt

其他回答

您可能想看一看cmdlet Tee-Object。您可以将输出管道到Tee,它将写入管道和文件

微软已经在Powershell的连接网站(2012-02-15 at 4:40 PM)上宣布,在3.0版本中,他们已经扩展了重定向来解决这个问题。

In PowerShell 3.0, we've extended output redirection to include the following streams: 
 Pipeline (1) 
 Error    (2) 
 Warning  (3) 
 Verbose  (4) 
 Debug    (5)
 All      (*)

We still use the same operators
 >    Redirect to a file and replace contents
 >>   Redirect to a file and append to existing content
 >&1  Merge with pipeline output

有关详细信息和示例,请参阅“about_Redirection”帮助文章。

help about_Redirection
powershell ".\MyScript.ps1" > test.log

如果你的情况允许,有一个可能的解决方案:

重命名MyScript。ps1到TheRealMyScript.ps1 创建一个新的MyScript。Ps1看起来像: \ TheRealMyScript。Ps1 > output.txt

如果你想从命令行执行,而不是内置到脚本本身,使用:

.\myscript.ps1 | Out-File c:\output.csv