使用PowerShell记录程序运行时

时间:2018-08-03 11:54:23

标签: windows powershell

我想记录特定程序的运行时并在文件(纯文本或Excel)中记录时间。

作为输出示例:

01.01.2018 notepad.exe Start: 06:30 End: 12:30 Duration: 6h
01.01.2018 notepad.exe Start: 14:00 End: 15:00 Duration: 1h
05.01.2018 ....

我已经尝试了各种方法,但是我的知识还不够,而且我什么也没有。没有记录任何级别的日志,因为它破坏了我的输出。

我现在拥有的是:

$name = 'openvpn-gui'
$anzahl = $prozesse.Count

$läuft = $anzahl -gt 0
$prozesse = Get-Process -Name $name -ErrorAction SilentlyContinue
$Path ="$env:C\Log\Log.txt"

if ($läuft) {
    New-TimeSpan -Start($prozesse).StartTime
} else {
    "$name läuft nicht"
}

背景是我要记录openvpn的使用。每天要使用几个小时?

由于我刚刚习惯PowerShell,所以我认为可以这样做。但是如上所述,我很快就达到了极限,没有线索继续。


好!我设法做点事情:)

$start = (get-process openvpn-gui).StartTime
wait-process openvpn-gui                           
$end = Get-Date                                

$Runtime = $end - $start

Write-Host "Startzeit $start"
write-host "Endzeit $end"
write-host "$($Runtime.Hours) Stunden, $($Runtime.Minutes) Minuten, $($Runtime.Seconds) Sekunden"

此处仍然存在2个错误:如果脚本运行时未执行openvpn-gui,则会出现错误消息

如何将其记录到文件中?我尝试使用Out-File -FilePath ...导致创建Log.txt但没有内容

1 个答案:

答案 0 :(得分:0)

您可以创建一个快捷方式,该快捷方式调用一个脚本,该脚本记录开始时间,然后为您加载openvpn,然后您可以调用脚本,因为openvpn将会运行。您可能需要引入几秒钟的延迟,以便在调用下面的脚本之前先加载openvpn。

$start = (get-process openvpn-gui).StartTime
wait-process openvpn-gui                           
$end = Get-Date                                

$Runtime = $end - $start

Write-Host "Startzeit $start"
write-host "Endzeit $end"
write-host "$($Runtime.Hours) Stunden, $($Runtime.Minutes) Minuten, $($Runtime.Seconds) Sekunden"

您可以像这样将变量写出到文件中

$StartTime = Get-Date -Format yyyyMMdd-HHmmss
$MyFilenamePath = "c:\test\OpenVPNStart$StartTime.txt"
$StartTime | sc $MyFilenamePath 
相关问题