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

如何通过PowerShell Get-ADComputer获取Windows扩展构建版本

问题原因

你原有命令无法获取扩展构建号的核心原因如下:

  • Active Directory 中计算机对象的OperatingSystemVersion属性仅存储Windows系统的基础版本构建号(例如10.0.19045),不会随系统累积补丁更新同步修订版本号,因此无法直接通过AD属性获取补丁对应的扩展构建段(即UBR,Update Build Revision,完整版本号的第四段,例如19045.3803里的3803)。
  • 原命令存在拼写错误:参数-Prperty正确写法为-Property。
可行解决方案

域环境下最通用的方案是通过PowerShell远程读取目标设备注册表中存储的完整版本信息,无需在设备上提前部署代理。

前置要求

  • 运行脚本的域账号具备所有目标设备的本地管理员权限
  • 目标设备开启WinRM服务(域环境可通过GPO批量开启,防火墙放行5985端口)
  • 目标设备处于在线状态

可直接运行的脚本

# 导入Active Directory模块
Import-Module ActiveDirectory -ErrorAction Stop

# 配置所在环境各Windows版本对应的最新扩展构建号,用于判断是否滞后
# 可根据微软每月补丁更新公告手动维护这个映射表
$latestBuildMap = @{
    "19045" = 4170  # Windows 10 22H2 对应累积补丁的UBR值,可自行更新
    "22621" = 3447  # Windows 11 22H2 最新UBR
    "22631" = 3447  # Windows 11 23H2 最新UBR
}

# 获取域内所有启用的计算机对象,可根据实际需求调整过滤规则
$computers = Get-ADComputer -Filter {Enabled -eq $true} -Properties Name, OperatingSystem, OperatingSystemVersion

$report = @()
foreach ($pc in $computers) {
    $result = [PSCustomObject]@{
        设备名称 = $pc.Name
        操作系统 = $pc.OperatingSystem
        基础版本号 = $pc.OperatingSystemVersion
        完整扩展构建号 = "获取失败"
        补丁状态 = "未知"
        备注 = ""
    }
    try {
        # 远程读取注册表中的UBR值
        $regBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $pc.Name)
        $regKey = $regBase.OpenSubKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion')
        $currentBuild = $regKey.GetValue('CurrentBuild')
        $ubr = $regKey.GetValue('UBR')
        $fullBuild = "$currentBuild.$ubr"
        $result.完整扩展构建号 = $fullBuild

        # 对比最新构建号判断补丁状态
        if ($latestBuildMap.ContainsKey($currentBuild)) {
            if ($ubr -ge $latestBuildMap[$currentBuild]) {
                $result.补丁状态 = "已安装最新补丁"
            } else {
                $result.补丁状态 = "版本滞后"
            }
        } else {
            $result.备注 = "未收录该版本的最新构建号基准"
        }
        $regKey.Close()
        $regBase.Close()
    }
    catch {
        $result.备注 = "设备连接失败,可能离线或未开放远程权限"
    }
    $report += $result
}

# 导出报告为CSV,可直接用Excel打开筛选统计
$report | Export-Csv -Path "Windows补丁安装状态报告.csv" -NoTypeInformation -Encoding UTF8

备选方案

如果环境部署了SCCM/MECM、Intune这类终端管理平台,直接从平台数据库拉取设备版本信息效率更高,不需要挨个遍历连接设备,也能覆盖离线设备的最近上报数据。
如果WinRM未批量开启,也可以通过GPO部署开机脚本,让设备开机时自动将自身完整版本号写入AD计算机对象的自定义扩展属性,后续直接查AD就能拿到数据,不需要远程连接。

注意:脚本里的$latestBuildMap需要每月根据微软官方发布的累积补丁更新对应的UBR值,才能准确判断设备是否安装了最新补丁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:21:24