如何在几分钟内掌握流程的开始时间?

时间:2018-12-14 18:31:05

标签: powershell batch-file cmd

我需要以分钟为单位(仅几分钟)来获取流程的开始时间。

我已经有代码获取目录的日期修改时间:

[int]([datetime]::Now - (gci 'C:\Folder' -Force).LastWriteTime).TotalMinutes

如何为仅占用几分钟时间的流程创建类似内容?

2 个答案:

答案 0 :(得分:5)

不是 ALL 进程已设置了属性StartTime,因此:

Get-Process | ForEach-Object {
    if($_.StartTime){
        [PSCustomObject]@{
            Process = $_.Name
            RunsMinutes=[int]([datetime]::Now - $_.StartTime).TotalMinutes
        }
    }
}

将产生类似这样的结果:

Process                RunsMinutes
-------                -----------
avgnt                          631
Avira.Systray                  631
ClassicStartMenu               632
cmd                            246
conhost                        561
conhost                        246
conhost                        459
ctfmon                         632
dllhost                        632
explorer                       632
fdm                            631
firefox                        594
firefox                        631
...

答案 1 :(得分:2)

Get-Process显示一些进程的开始时间,可用来计算经过的分钟数。请注意,[int]将始终四舍五入到最接近的整数(分钟)。

使用与帖子相同的方法来计算分钟数,看起来像是:

Get-Process -Name explorer | select name,starttime,@{N="Minutes elapsed";E={[int]([datetime]::Now - $_.StartTime).TotalMinutes}}

输出:

Name     StartTime           Minutes elapsed
----     ---------           ---------------
explorer 14/12/2018 02:46:00             991