如何将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




