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

如何通过PowerShell查询WSUS客户端更新状态并向未更新用户发邮件

基于PowerShell的WSUS客户端更新状态查询与告警方案

该方案通过调用Windows系统自带的更新代理COM对象实现状态查询,兼容性高于注册表、事件日志读取方案,可直接适配WSUS管理的客户端设备。

1. 核心查询与告警脚本

将以下内容保存为WSUSUpdateAlert.ps1:

# 初始化Windows更新会话
$updateSession = New-Object -ComObject Microsoft.Update.Session
$updateSearcher = $updateSession.CreateUpdateSearcher()

# 读取最近一次成功安装的更新记录
$lastSuccessUpdate = $updateSearcher.QueryHistory(0, 10) | Where-Object {$_.ResultCode -eq 2} | Select-Object -First 1
$daysSinceLastUpdate = if ($lastSuccessUpdate) {
    ((Get-Date) - $lastSuccessUpdate.Date).TotalDays.ToString("F1")
} else {
    "无有效更新记录"
}

# 查询待安装的更新数量(排除已隐藏、已拒绝的更新)
$pendingUpdates = $updateSearcher.Search("IsInstalled=0 and IsHidden=0").Updates
$pendingCount = $pendingUpdates.Count

# 配置告警触发规则,可根据业务需求调整
$alertTrigger = $false
$alertContent = ""
if ($pendingCount -gt 0) {
    $alertTrigger = $true
    $alertContent += "当前存在 $pendingCount 个未安装的系统更新`n"
}
if ($daysSinceLastUpdate -ne "无有效更新记录" -and [double]$daysSinceLastUpdate -gt 30) {
    $alertTrigger = $true
    $alertContent += "最近一次系统更新距今已 $daysSinceLastUpdate 天,超过30天阈值`n"
}

if ($alertTrigger) {
    $alertContent = @"
【WSUS客户端更新告警通知】
设备名称:$env:COMPUTERNAME
当前登录用户:$env:USERNAME
最近更新时间:$($lastSuccessUpdate.Date ?? "无记录")
距今天数:$daysSinceLastUpdate
待安装更新数量:$pendingCount
请尽快完成系统更新,避免出现安全漏洞或功能异常。
"@
    # 邮件发送配置,替换为企业实际SMTP信息
    $smtpConfig = @{
        SmtpServer = "smtp.你的企业邮箱域名.com"
        Port = 587
        UseSsl = $true
        Credential = New-Object System.Management.Automation.PSCredential ("告警发送邮箱@你的域名.com", (ConvertTo-SecureString "邮箱授权码" -AsPlainText -Force))
        From = "告警发送邮箱@你的域名.com"
        To = "接收告警的用户邮箱@xxx.com"
        Subject = "系统更新告警:设备$env:COMPUTERNAME 存在更新异常"
        Body = $alertContent
        Encoding = [System.Text.Encoding]::UTF8
    }
    Send-MailMessage @smtpConfig
    Write-Host "更新异常告警邮件已发送"
} else {
    Write-Host "当前设备更新状态正常"
}

2. 自动执行配置

要实现定期自动检测告警,可将脚本配置到Windows计划任务中:

  • 触发条件可设置为「每天定时执行一次」、「用户登录时执行」
  • 安全选项勾选「使用最高权限运行」,避免更新组件访问被拦截
  • 执行操作设置为powershell.exe -ExecutionPolicy Bypass -File "脚本完整路径\WSUSUpdateAlert.ps1"

3. 注意事项

  • 脚本仅需在客户端本地运行,无需WSUS服务器端权限,适配所有Windows 10/11、Windows Server 2016及以上版本系统
  • 告警阈值(30天未更新、待更新数量大于0)可根据企业安全规范自行调整
  • SMTP服务配置需符合企业邮箱要求,部分邮箱需使用专用授权码代替账号密码登录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:02