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

如何使用Powershell在文件中动态追加时间,powershell,time,output,Powershell,Time,Output,希望我的标题措辞正确 成绩单文件不显示我想要的信息,我需要能够一目了然地看到特定事件,因此我添加了一个额外的文件,作为日志文件使用 我希望在每一行的开头追加时间,但它只需要在脚本开头检索到时间,并反复使用它 脚本: 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-D

希望我的标题措辞正确

成绩单文件不显示我想要的信息,我需要能够一目了然地看到特定事件,因此我添加了一个额外的文件,作为日志文件使用

我希望在每一行的开头追加时间,但它只需要在脚本开头检索到时间,并反复使用它

脚本:

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

$logtime = [System.DateTime]::Now
此方法承诺获取当前时间


编辑以删除每次重新分配以获取日期的建议,因为这对您不起作用。

您是否可以在每次输出时将其分配给$logtime

$logtime = [System.DateTime]::Now
此方法承诺获取当前时间

编辑以删除每次重新分配获取日期的建议,因为这对您不起作用。

最终代码,感谢“Willcodeforfun”:

虽然我觉得这样做违背了变量的目的,并且在整个脚本中添加变量很痛苦(看起来很凌乱),但它完成了任务,并使最终结果简洁易读

上面所说的不是“Willcodeforfun”,而是指PowerShell无法使用变量获取实际当前时间

最后的代码,感谢“Willcodeforfun”:

虽然我觉得这样做违背了变量的目的,并且在整个脚本中添加变量很痛苦(看起来很凌乱),但它完成了任务,并使最终结果简洁易读


上面所说的不是“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

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

为您想要做的事情编写一个函数

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

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

遗憾的是,没有。这样做时,每次都会将其放在新的行上:
03:14:34第一行03:14:34第二行
这是另一个尝试,祝您好运!哦,我错了!我原以为您打算这样做:
Write output$logtime“First line”|添加内容$log
。如果在调用
$logtime
变量之前添加
$logtime=Get Date-Format“hh:mm:ss”
$logtime=[System.DateTime]::Now
,它实际上可以工作。虽然这是一个巨大的痛苦的屁股,我想这是我为一个定制的日志文件付出的代价!谢谢你的帮助,非常感谢。遗憾的是,没有。这样做的话,每次都会换一行:
03:14:34第一行03:14:34第二行
这里是另一个尝试,祝你好运!哦,我错了!我原以为您打算这样做:
Write output$logtime“First line”|添加内容$log
。如果在调用
$logtime
变量之前添加
$logtime=Get Date-Format“hh:mm:ss”
$logtime=[System.DateTime]::Now
,它实际上可以工作。虽然这是一个巨大的痛苦的屁股,我想这是我为一个定制的日志文件付出的代价!谢谢你的帮助,非常感谢。