我需要以分钟为单位(仅几分钟)来获取流程的开始时间。
我已经有代码获取目录的日期修改时间:
[int]([datetime]::Now - (gci 'C:\Folder' -Force).LastWriteTime).TotalMinutes
如何为仅占用几分钟时间的流程创建类似内容?
答案 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