新手求助:如何用PowerShell捕获Microsoft-Windows-Storage-Storport/Health日志?
解决PowerShell捕获Microsoft-Windows-Storage-Storport/Health事件日志的问题
为什么
Get-EventLog会报错:Get-EventLog是旧版cmdlet,仅支持传统事件日志(如Application、System),不支持像Microsoft-Windows-Storage-Storport/Health这类基于ETW的现代事件日志,必须用Get-WinEvent。正确的命令示例:
- 获取该日志下的所有事件:
Get-WinEvent -LogName "Microsoft-Windows-Storage-Storport/Health" - 筛选指定InstanceId(如511)的事件:
(用Get-WinEvent -FilterHashtable @{LogName="Microsoft-Windows-Storage-Storport/Health"; Id=511}FilterHashtable比直接指定参数更高效,尤其是日志条目较多时)
- 获取该日志下的所有事件:
提取事件的全部详细数据:
默认输出只显示摘要信息,要查看事件里的所有字段(包括你提到的图示中的数据),可以用以下方法:- 单个事件查看完整属性:
Get-WinEvent -FilterHashtable @{LogName="Microsoft-Windows-Storage-Storport/Health"; Id=511} | Select-Object -Property * - 把事件数据转为JSON格式,方便查看结构化内容:
Get-WinEvent -FilterHashtable @{LogName="Microsoft-Windows-Storage-Storport/Health"; Id=511} | ConvertTo-Json -Depth 10 - 提取事件的具体属性值(比如事件描述、相关设备信息):
Get-WinEvent -FilterHashtable @{LogName="Microsoft-Windows-Storage-Storport/Health"; Id=511} | ForEach-Object { [PSCustomObject]@{ TimeCreated = $_.TimeCreated EventId = $_.Id Message = $_.Message DeviceId = $_.Properties[0].Value # 索引根据实际事件数据调整,可先查看Properties内容确认 } }
- 单个事件查看完整属性:
确认日志是否存在:
如果仍报错,先确认日志名称是否正确,运行以下命令列出所有包含Storport的日志:Get-WinEvent -ListLog *Storport*确保
Microsoft-Windows-Storage-Storport/Health在结果中,若不存在,可能是该日志未启用,需在事件查看器中开启。
内容的提问来源于stack exchange,提问作者shubham kumar
相关产品推荐
相关产品推荐

