可使用powershell通过graph api(intune)或wsus模块导出补丁分组审批状态:intune需注册应用并调用get-mgadminwindowsupdatesdeployment等命令;wsus需加载updateservices.dll并遍历目标组与批准记录。
可以使用 powershell 调用 windows update for business(wufb)或 microsoft intune 的 graph api,导出补丁分组(即“更新部署”或“windows 更新部署策略”)的审批状态清单。关键在于:你用的是本地 wsus、microsoft endpoint configuration manager(sccm),还是云环境(intune + wufb)?不同平台方法差异较大。下面按主流场景分别说明:
✅ 通过 Microsoft Graph API(Intune 环境)导出部署审批状态
这是当前推荐方式,适用于使用 Intune 管理 Windows 更新(含“更新部署”分组)的组织。
- 需提前注册应用并授予
DeviceManagementManagedDevices.Read.All或DeviceManagementConfiguration.Read.All权限 - 使用
Connect-MgGraph登录(需安装Microsoft.Graph.DeviceManagement和Microsoft.Graph.DeviceManagement.Administration模块) - 审批状态实际体现在
updateDeployment对象的deploymentState和关联的deviceUpdateState中
示例脚本片段:
Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All"
$deployments = Get-MgAdminWindowsUpdatesDeployment -All
$results = @()
foreach ($dep in $deployments) {
$state = Get-MgAdminWindowsUpdatesDeploymentDeploymentState -WindowsUpdatesDeploymentId $dep.Id -ErrorAction SilentlyContinue
$results += [pscustomobject]@{
DeploymentId = $dep.Id
DisplayName = $dep.DisplayName
State = $state.State
LastModified = $state.LastModifiedDateTime
ApprovedCount = ($state.InstallStateSummary.ApprovedCount -as [int])
InstalledCount = ($state.InstallStateSummary.InstalledCount -as [int])
FailedCount = ($state.InstallStateSummary.FailedCount -as [int])
}
}
$results | Export-Csv -Path "UpdateDeploymentApprovalStatus.csv" -NoTypeInformation
✅ 通过 WSUS PowerShell 模块(本地 WSUS 环境)
如果你使用的是传统 WSUS 服务器管理补丁分组(即“计算机目标组”+“更新批准”),则用 UpdateServices 模块。
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
- 确保在 WSUS 服务器或已安装
UpdateServices远程管理模块的机器上运行 - 审批状态由
Get-WsusUpdate+Get-WsusUpdateApproval组合获取 - 需遍历每个目标组(Target Group)和每条批准记录
简明导出示例:
Add-Type -Path "C:\Program Files\Update Services\Api\Microsoft.UpdateServices.Administration.dll"
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("your-wsus-server", $false, 8530)
$groups = $wsus.GetComputerTargetGroups()
$report = @()
foreach ($group in $groups) {
$approvals = $wsus.GetUpdateApprovals($null, $group)
foreach ($app in $approvals) {
$report += [pscustomobject]@{
UpdateTitle = $app.Update.Title
ApprovalAction = $app.Action
TargetGroupName = $group.Name
ApprovedBy = $app.AdminName
ApprovalTime = $app.CreationDate
}
}
}
$report | Export-Csv "WSUS_Approval_Report.csv" -NoTypeInformation
⚠️ 注意事项与常见问题
-
权限必须到位:Graph API 需 Azure AD 应用权限 + 管理员同意;WSUS 需本地 WSUS 管理员或
WSUS Administrators组成员身份 - 状态字段含义不同:“审批”在 Intune 中是部署启用/暂停/完成,在 WSUS 中是“已批准/已拒绝/未指定”动作
- 不支持直接导出“补丁分组名 → 审批状态汇总表”一键命令,需自行聚合(如按组统计已批准更新数、失败设备数等)
- 若用 SCCM(ConfigMgr),应改用
Get-CMSoftwareUpdateDeployment+Get-CMDeploymentSummary,且需先连接 CM PS Drive
选对平台、装好模块、配好权限,脚本跑起来就能拿到结构化清单。不需要第三方工具,原生 PowerShell 完全胜任。










