Как отфильтровать от xml, чтобы получить продолжительность загрузки с помощью powershell? - PullRequest
1 голос
/ 12 апреля 2020

так вот код и он дает таблицу в качестве вывода.

$bootevents = Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Diagnostics-Performance/Operational"; id=100} $bootevent = [xml]$bootevents[0].ToXml() $bootevent.Event.EventData.Data

Если я хочу одну запись сущности из Имя как BootTime для фильтрации и вывода вместо отображения всего списка / таблицы

какие изменения следует внести?

В противном случае вы могли бы посоветовать другой способ получения продолжительность загрузки с использованием powershell?

заранее спасибо,

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Чтобы просто получить время загрузки:

$bootevent.Event.EventData.Data | ? name -eq boottime

Name     #text
----     -----
BootTime 30234

Кстати, более новые PowerShell (6, 7) могут фильтровать именованные поля данных события. И некоторые фильтры могут принимать групповые символы. Но в логе есть ограничение в 256 элементов.

Get-WinEvent @{logname='*Diagnostics-Performance*'; boottime=30234}


   ProviderName: Microsoft-Windows-Diagnostics-Performance

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
4/12/2020 1:11:05 PM           100 Warning          Windows has started up: …
1 голос
/ 12 апреля 2020

Другой, более короткий, вариант:

$bootevent.SelectSingleNode("//*[@Name='BootTime']")

Выход:

Name     #text 
----     ----- 
BootTime 123355
...