Powershell – 如何logging所有外部CMD输出?

我有一个从cmd行很好的PowerShell脚本,但是从任务调度程序运行时会出现很多。

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

该脚本做了很多外部命令(净使用,robocopy等)。 这些命令的输出是我最需要的。

我们不希望每一个命令都被使用,因为它很丑,而且我们需要交互地运行(看看发生了什么)。

我试用了-Verbose的PowerShell“Start-Transcript”,但没有任何命令被logging到脚本文件中。 即使我们在PowerShell团队中遵循这个指令 :| Out-Default(例如ipconfig.exe | Out-Default),我们仍然看不到转录本中的输出。

接下来是什么?

通过redirectpowershell调用,将日志loggingconfiguration为在计划任务内发生:

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

如果ROBOCOPY日志正在执行超过10个文件,我会使用命令支持的/LOG:c:\temp\robo.log选项来保持它不同。

那么,即使不是最漂亮的解决scheme,你也许可以做类似以下的事情?

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

而且你也可以用robocopy的日志loggingfunction来做同样的事情。