rac*_*ce1 10 powershell stderr tee
我使用此命令查看控制台和文件中的输出:
powershell -command "my_command_1 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"
powershell -command "my_command_2 | tee ('logs\{0}.log' -f (Get-Date -format 'yyyy.MM.dd-HH.mm'))"
# etc
Run Code Online (Sandbox Code Playgroud)
它的效果没有我预期的那么好,我有一些问题:
输出工作非常奇怪。对于某些命令,在打印文本和更新控制台/文件之间存在巨大的延迟。对于其他一些命令,输出似乎在打印文本时更新(我运行没有 tee 的命令,我知道它应该打印什么)。这种延迟使这款 T 恤几乎毫无用处 - 如果将打印一些严重错误,因此我需要停止该命令,但我什么也看不到,直到为时已晚怎么办?
对于某些命令,仅在完成完整命令后才会打印输出。
这些问题有解决方案吗?如果没有,PowerShell 中的这个 tee 东西是完全没用的。
My-Command 2>&1 | Tee-Object 'myfile.log'. 见Get-Help about_Redirection。Get-Help about_Try_Catch_Finally。您正在运行的命令是外部程序还是脚本?Tee可能会很好地处理部分字符串,但其他 cmdlet 喜欢ForEach-Object或Select-Object肯定不会。请注意,它Get-Content有一个特殊的开关-ReadCount,它在某种程度上覆盖了此行为,并且它会严重干扰Select-Object -Skip/-First/-Last/-Unique管道下游的命令。很可能您正在运行的外部程序不会遵守 PowerShell 所期望的约定。Tee例如,正确地称为Tee-Object,它应该告诉您它擅长处理的事物的种类。在这种情况下,您可能更愿意tee.exe从专为立即转发内容而设计的GNU Win32 Utils或MSYS获得。
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |