希望我能正确地说出这个标题。
成绩单文件不显示我想要的信息,我需要能够一目了然地查看特定事件,因此我添加了一个我用作日志文件的附加文件。
我希望在每行的开头添加时间,但它只需要在脚本开头检索时间并反复使用它。
脚本:
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
很可能没有办法做到这一点,但我想我会试一试。
感谢您的帮助。
答案 0 :(得分:2)
每次要输出时,是否可以将此值分配给$ logtime?
$logtime = [System.DateTime]::Now
这种方法有望获得当前时间。
编辑删除您每次重新分配到Get-Date的建议,因为这对您不起作用。
答案 1 :(得分:1)
最终代码,感谢“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”进行过拍摄,但是正在对Powershells无法使用变量获取实际当前时间进行拍摄。
答案 2 :(得分:1)
为你想做的事写一个函数。
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
我确信通过一些搜索,你可以找到更详细和完整的类似模式的例子。