如何使用Powershell

时间:2016-03-29 03:58:09

标签: 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-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

很可能没有办法做到这一点,但我想我会试一试。

感谢您的帮助。

3 个答案:

答案 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

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