如何从 xml 过滤以使用 powershell 获取启动持续时间?

Posted

技术标签:

【中文标题】如何从 xml 过滤以使用 powershell 获取启动持续时间?【英文标题】:How to filter from xml to get boot duration using powershell? 【发布时间】:2020-04-12 15:37:31 【问题描述】:

所以这里是代码,它提供了一个表格作为输出。

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

如果我希望 Name 中的一个实体记录(例如 BootTime)被过滤 并输出,而不是显示整个列表/表格, p>

应该做哪些改变?

您能否建议任何其他方法来使用 powershell 获得 启动持续时间

提前致谢,

【问题讨论】:

【参考方案1】:

仅获取启动时间:

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

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

顺便说一句,较新的 powershell (6, 7) 可以过滤命名的 eventdata 数据字段。有些过滤器可以使用通配符。但是日志名有 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: …

【讨论】:

【参考方案2】:

另一个更短的选项:

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

输出:

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

【讨论】:

是的,我正在寻找这个特殊的声明 (.SelectSingleNode).. ..非常感谢.. (╭?ᵔ◡ᵔ)╭?

以上是关于如何从 xml 过滤以使用 powershell 获取启动持续时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PowerShell 处理数组以查找特定字符串?

如何使用powershell从xml中获取属性值?

如何从 PowerShell 运行 *.exe 文件

Powershell脚本过滤文件并使用奇偶数(从1到2)重命名文件]]

如何从我的 Powershell 脚本中的 Get-ADUser 过滤器获取结果,以便验证该用户是不是存在?

在 C# 中运行 Powershell 脚本以启用键盘过滤器