我有一个PowerShell脚本,我想将输出重定向到一个文件。问题是我不能改变这个脚本的调用方式。所以我不能:
.\MyScript.ps1 > output.txt
如何重定向PowerShell脚本执行期间的输出?
我有一个PowerShell脚本,我想将输出重定向到一个文件。问题是我不能改变这个脚本的调用方式。所以我不能:
.\MyScript.ps1 > output.txt
如何重定向PowerShell脚本执行期间的输出?
当前回答
也许Start-Transcript对你有用。如果它已经在运行,首先停止它,然后启动它,完成时停止它。
$ErrorActionPreference="SilentlyContinue" Stop-Transcript | out-null $ErrorActionPreference = "Continue" Start-Transcript -path C:\output.txt -append # Do some stuff Stop-Transcript
你也可以让它在工作时运行,并让它保存你的命令行会话以供以后参考。
如果你想在试图停止一个没有转录的转录时完全抑制错误,你可以这样做:
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
其他回答
如果你的情况允许,有一个可能的解决方案:
重命名MyScript。ps1到TheRealMyScript.ps1 创建一个新的MyScript。Ps1看起来像: \ TheRealMyScript。Ps1 > output.txt
也许Start-Transcript对你有用。如果它已经在运行,首先停止它,然后启动它,完成时停止它。
$ErrorActionPreference="SilentlyContinue" Stop-Transcript | out-null $ErrorActionPreference = "Continue" Start-Transcript -path C:\output.txt -append # Do some stuff Stop-Transcript
你也可以让它在工作时运行,并让它保存你的命令行会话以供以后参考。
如果你想在试图停止一个没有转录的转录时完全抑制错误,你可以这样做:
$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference = "Continue" # or "Stop"
您可能想看一看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
如果你想从命令行执行,而不是内置到脚本本身,使用:
.\myscript.ps1 | Out-File c:\output.csv