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

PowerShell筛选最近两天Windows更新记录无输出问题

问题原因

Get-CimInstance查询Win32_QuickFixEngineering类返回的InstalledOn属性并非强类型DateTime对象,在多数Windows环境下该字段为字符串格式的日期值。直接将字符串与Get-Date生成的DateTime对象做大小比较时,PowerShell无法完成有效的隐式类型转换,比较逻辑始终返回$false,因此筛选后无结果输出,也不会触发报错。

解决方法

筛选时先判断InstalledOn字段非空,再将其显式转换为DateTime类型后再做时间比对,正确命令如下:

# 查询近2天安装的Windows更新
Get-CimInstance -Class Win32_QuickFixEngineering | Where-Object {
    $_.InstalledOn -and [DateTime]$_.InstalledOn -gt (Get-Date).AddDays(-2)
}

扩展:统计近1天更新数量的完整脚本

如果需要直接统计近1天的更新安装数,可以直接使用以下代码:

# 计算近1天的时间阈值
$threshold = (Get-Date).AddDays(-1)
# 筛选符合时间范围的更新并计数
$recentUpdateCount = (Get-CimInstance -Class Win32_QuickFixEngineering | Where-Object {
    $_.InstalledOn -and [DateTime]$_.InstalledOn -gt $threshold
} | Measure-Object).Count
# 输出结果
Write-Host "近1天内共安装 $recentUpdateCount 个Windows更新"

注意事项

  • Win32_QuickFixEngineering类仅会枚举通过组件服务(CBS)、Windows Installer、常规Windows Update/WSUS通道安装的热修复补丁,部分手动安装的大型累积更新、带外补丁可能不会被该类收录,若统计结果和系统更新历史存在偏差,可搭配Get-WUHistory返回的结果做交叉校验,只要提前将Get-WUHistory返回的日期字段显式转换为本地DateTime类型即可解决格式不符合预期的问题。
  • 部分老旧Windows版本(如Windows 7/Server 2008R2未升级最新WMF版本)中InstalledOn字段的字符串格式存在区域差异,若转换报错可以使用[DateTime]::ParseExact()方法指定对应区域的日期格式做解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:06:40