Как получить время запуска процесса в минутах? - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужно получить время запуска процесса в минутах (и только минутах.)

У меня уже есть код для получения каталога Дата Измененное время:

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

Как создать нечто подобное для процессов, которые занимают всего несколько минут?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Не ВСЕ процессы имеют свойство 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
...
0 голосов
/ 14 декабря 2018

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...