如何使用 Powershell 在文件中动态附加时间

How to dynamically append time in a file using Powershell

希望我的标题措辞正确。

抄本文件没有显示我想要的信息,我需要能够一眼看到特定事件,因此我添加了一个额外的文件,用作日志文件。

我想在每一行的开头附加时间,但它只需要在脚本开头检索到的时间并一遍又一遍地使用它。

脚本:

start-transcript -path "C:\temp\transcript  $(get-date -f dd-MM-yyyy).txt"
$log = "c:\temp\log $(get-date -f dd-MM-yyyy).txt"
$logtime = Get-Date -Format "hh:mm:ss"

Write-output "$logtime First line" | add-content $log
start-sleep -s 60
Write-output "$logtime Second line" | add-content $log

stop-transcript
exit

这是我得到的输出,即使它休眠了整整一分钟:

02:43:52 First line
02:43:52 Second line

很可能没有办法做到这一点,但我想无论如何我都会试一试。

感谢您的帮助。

每次你想输出它时,你能把它分配给 $logtime 吗?

$logtime = [System.DateTime]::Now

此方法承诺获取当前时间。

编辑以删除您每次都重新分配给 Get-Date 的建议,因为这对您不起作用。

最终代码,感谢"Willcodeforfun":

start-transcript -path "C:\temp\transcript  $(get-date -f dd-MM-yyyy).txt"
$log = "c:\temp\log $(get-date -f dd-MM-yyyy).txt"

$logtime = Get-Date -Format "hh:mm:ss"
Write-output $logtime "First line" | add-content $log
start-sleep -s 60
$logtime = Get-Date -Format "hh:mm:ss"
Write-output $logtime "Second line" | add-content $log

stop-transcript
exit

虽然我觉得这种方式违背了变量的目的,并且很难在我的整个脚本中添加(看起来很乱),但它完成了工作并使最终结果整洁且易于阅读。

以上不是针对"Willcodeforfun",而是针对Powershell无法使用变量获取当前时间的问题。

为你想做的事情写一个函数。

function Write-Log1 ($message, $logfile)
{
    $logtime = Get-Date -Format "hh:mm:ss"
    Write-Output "$logtime $message" | Add-Content $logfile
}

function Write-Log2 ($message)
{
    $logfile = Join-Path "c:\temp\log" "$(get-date -f dd-MM-yyyy).txt"
    $logtime = Get-Date -Format "hh:mm:ss"
    Write-Output "$logtime $message" | Add-Content $logfile
}


# call like this:

Write-Log1 "First line" $log
Write-Log1 "Second line" $log

# if you want, hard code the log inside the function

Write-Log2 "First line" $log
Write-Log2 "Second line" $log

我相信通过一些搜索,您可以找到类似模式的更详尽和完整的示例。