You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Out-GridView输出时排序失效问题求助

问题原因及解决方案

核心原因

你当前的脚本里,findstr输出的是纯文本行,并非PowerShell可识别的结构化对象:

  • Sort-Object(Sort是它的别名)的"Date"参数是用来按对象的Date属性排序的,但这些纯字符串没有这个属性,所以Sort实际是按字符串本身的字典序排序,而非你期望的日期值排序。
  • 即便按字符串排序,wevtutil输出的日期文本格式(比如Date: MM/DD/YYYY HH:MM:SS)的字典序和实际日期顺序可能不一致,导致你看起来结果没按预期倒序。

最优解决方案:用PowerShell原生命令处理

直接使用Get-WinEvent查询日志,它会返回结构化的事件对象,能直接按时间属性准确排序:

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    ID=@(4800,4801)
} | Sort-Object TimeCreated -Descending | Select-Object TimeCreated, Id, Message | Out-GridView

这个脚本会:

  1. 查询安全日志中ID为4800(锁屏)和4801(解锁)的事件
  2. 按事件创建时间倒序排列
  3. 只显示时间、事件ID和消息字段,输出到网格视图

保留wevtutil的替代方案

如果一定要用wevtutil,需要先把文本转换成带日期属性的对象,再排序:

wevtutil qe Security /q:"*[System[(EventID=4800 or EventID=4801)]]" /f:Text |
    ForEach-Object {
        # 匹配日期行并提取日期字符串
        if ($_ -match 'Date:\s*(.*)') {
            [PSCustomObject]@{
                # 把字符串转换成DateTime类型,确保排序准确
                Date = [DateTime]$matches[1]
                OriginalLine = $_
            }
        }
    } | Sort-Object Date -Descending | Select-Object OriginalLine | Out-GridView

内容的提问来源于stack exchange,提问作者NVerret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:33:13