为命令或可执行文件的每一行输出添加时间戳

Prepending a timestamp to each line of output from a command or executable

我想在命令的每一行输出前加上一个时间戳。例如:

foo
bar
baz

会变成:

[2011-12-13 12:20:38] foo
[2011-12-13 12:21:32] bar
[2011-12-13 12:22:20] baz

其中前缀时间是打印该行的时间。如何使用 PowerShell 实现此目的?

假设您的命令是名为 foo 的外部命令,您可以通过 ForEach-Object 将其输出通过管道传输以添加时间戳:

foo | ForEach-Object { "$(Get-Date -Format "[yyyy-MM-dd HH:mm:ss]") $_" }

您可以使用类似以下内容的命名列:

x.exe |Select @{Name='XTime';Expression={"[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] $_"}}