Powershell - 如何记录所有外部 cmd 输出?

Powershell - 如何记录所有外部 cmd 输出?

我有一个 powershell 脚本,它在 cmd 行中运行良好,但从任务计划程序运行时会出现很多问题。

所以我需要查看所有命令的所有控制台输出。

该脚本执行了很多外部命令(net use、robocopy 等)。这些命令的输出正是我最需要的。

我们不想对每个命令进行检测,因为这样很丑陋,而且我们需要以交互方式运行它(并查看发生了什么)。

我尝试使用 -Verbose 的 powershell “Start-Transcript”,但没有一个命令记录到脚本文件中。即使我们按照本指令由 powershell 团队的一名成员撰写:|Out-Default(例如 ipconfig.exe | Out-Default),我们仍然没有在记录中看到输出。

接下来是什么?

答案1

通过重定向 powershell 调用配置在计划任务中进行的日志记录:

cmd /c powershell.exe -noninteractive -file c:\temp\script.ps1 > c:\temp\some.log 2>&1

如果ROBOCOPY日志包含超过 10 个文件,我会使用/LOG:c:\temp\robo.log该命令支持的选项将其分开。

答案2

好吧,即使这不是最漂亮的解决方案,您是否可以做以下类似的事情?

net use z: \\my\path >> mylogfile.txt 2>&1

您可以使用 robocopy 的日志记录功能执行相同的操作,只需将其附加到同一个文件即可。

相关内容