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

 .\MyScript.ps1 > output.txt

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


当前回答

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

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

其他回答

也许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"

要在你的脚本中嵌入它,你可以这样做:

        Write-Output $server.name | Out-File '(Your Path)\Servers.txt' -Append

这样应该可以了。

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

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

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

.\myscript.ps1 | Out-File c:\output.csv
powershell ".\MyScript.ps1" > test.log