Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает как при помощи Windows PowerShell получить имя и время работы процесса.
Получаем все процессы со значением для свойства StartTime
Для получения всех процессов я использую командлет Get-Process. Затем я передам его результаты командлету Where-Object, где в качестве условия укажу наличие значения для свойства StartTime. Я выберу только свойства Name и StartTime, поскольку это все, что мне требуется.
gps | ? starttime | select name, starttime
Создаем TimeSpan
Теперь мне нужно создать объект TimeSpan. Для этого я воспользуюсь командлетом New-TimeSpan. В следующем примере я практикуюсь на процессе Notepad.
PS C:\> (New-TimeSpan -start (gps notepad).starttime).tostring(«g»)
7:24:02.2344579
После нескольких попыток я пришел к выводу, что вместо создания пользовательского формата TimeSpan я буду использовать стандартный формат TimeSpan. Стандартные форматы объекта TimeSpan описаны на MSDN: Standard TimeSpan Format Strings. Должен сказать, что использование стандартного формата значительно упрощает работу.
Создаем таблицу
Теперь, когда я решил, какой формат будет использоваться объектом TimeSpan, настало время создать таблицу. Трюк заключается в использовании хеш-таблицы для определения пользовательского свойства в командлете Format-Table. Вот хеш-таблица, которую мы будем использовать.
@{LABEL=’uptime’;EXPRESSION={(New-TimeSpan -start ($_.StartTime).tostring(«g»))}} –AutoSize
Полная команда приведена ниже.
gps |
? starttime |
select name, starttime |
sort starttime -descending|
Format-Table name,
@{LABEL=’uptime’;EXPRESSION={(New-TimeSpan -start ($_.StartTime).tostring(«g»))}} –AutoSize
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell