You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将PowerShell脚本的终端输出重定向至文件?

解决PowerShell脚本输出重定向到文件的问题

嗨,我来帮你搞定这个PowerShell输出重定向的问题~你之前写的命令语法有问题,&1的用法不对导致无法生效,下面给你几个正确的解决方案:

方法1:直接重定向所有输出流到文件

如果你想把脚本运行时的**所有输出(包括正常信息、错误、警告等)**都写入文件,直接用*>符号就可以,这是最简洁的写法:

.\myscript.ps1 *> outfile.log

如果不想覆盖文件内容,而是追加到文件末尾,就用*>>

.\myscript.ps1 *>> outfile.log

方法2:同时在终端显示并写入文件

要是你想既在终端看到输出,又把内容保存到文件里,可以用Tee-Object命令,它能把输出“分流”到文件和控制台:

.\myscript.ps1 *>&1 | Tee-Object -FilePath outfile.log

这里的*>&1是把所有流(错误、警告等)合并到成功输出流,再通过管道传给Tee-Object处理。

方法3:在脚本内部添加重定向逻辑

如果希望脚本本身运行就自动把输出写入文件,而不需要每次调用时加参数,可以在脚本开头添加这段代码:

# 确保错误信息会被输出(默认情况下部分错误可能被抑制)
$ErrorActionPreference = "Continue"
# 将所有输出重定向到指定文件
& $MyInvocation.MyCommand.Path *>&1 | Out-File -FilePath "outfile.log" -Encoding utf8

不过这种方式会让脚本运行时终端不再显示输出,所有内容都直接写入文件,适合不需要实时查看输出的场景。

补充说明

你之前的错误写法里,*> &1是语法错误,正确的合并所有流到成功流的写法是*>&1(没有空格),但其实单独用*>直接指向文件就足够完成所有输出的重定向,不需要多此一举合并流再重定向~

内容的提问来源于stack exchange,提问作者Walid Laasmi

火山引擎 最新活动