使用Tee-Object重定向

时间:2015-09-18 06:52:35

标签: powershell powershell-v2.0

我想运行此命令并将redirect所有输出都运行到Windows以及日志文件。

powershell "C:\backup\backup.bat *>&1 | tee log.txt"

所以当我运行命令时,我可以看到输出并将其保存在文件中,但是我收到了这个错误:

Ampersand not allowed. The & operator is reserved for future use; use "&" to pa
ss ampersand as a string.
At line:1 char:25
+ C:\backup\backup.bat *>& <<<< 1 | tee log.txt
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordEx
   ception
    + FullyQualifiedErrorId : AmpersandNotAllowed

2 个答案:

答案 0 :(得分:4)

要将.bat文件执行的输出提供给控制台以及文件,请使用:

powershell "& 'C:\backup\backup.bat' *>&1  | Tee-Object -FilePath 'log.txt'"

有一篇好文章PowerShell and external commands done right,它解释了如何启动外部命令。之后,只需在您链接的文章中应用重定向。

答案 1 :(得分:2)

在PowerShell v3之前,不支持重定向SuccessError以外的流(AKA STDOUTSTDERR),如@CB。在评论中提到。在PowerShell v2中,您只能合并错误流:

powershell "C:\backup\backup.bat 2>&1 | tee log.txt"