加速 Windows 质量更新的编程控制
在本文中,你将:
必备条件
必须满足所有 Windows 自动修补先决条件 ,包括确保在客户端上安装 更新运行状况工具 。
- 从 KB4023057 开始安装更新运行状况工具。 若要确认设备上是否存在更新运行状况工具,请使用以下方法之一:
- 针对 加速更新运行就绪情况测试
- 查找文件夹 C:\Program Files\Microsoft Update Health Tools,或查看为Microsoft更新运行状况工具添加删除程序。
- 用于验证工具安装的示例 PowerShell 脚本:
Get-CimInstance -ClassName Win32_Product \| Where-Object {$_.Name -match "Microsoft Update Health Tools"}
权限
本文中列出的查询需要以下权限:
- Windows 自动修补操作的 WindowsUpdates.ReadWrite.All。
- 至少具有显示设备信息的 Device.Read.All 权限。
某些角色(例如Windows 更新部署管理员)已具有这些权限。
所需的终结点
必须有权访问以下终结点:
- *.prod.do.dsp.mp.microsoft.com
- *.windowsupdate.com
- *.dl.delivery.mp.microsoft.com
- *.update.microsoft.com
- *.delivery.mp.microsoft.com
- tsfe.trafficshaping.dsp.mp.microsoft.com
图形 API终结点:
- devicelistenerprod.microsoft.com
- login.windows.net
- payloadprod*.blob.core.windows.net
打开 Graph 资源管理器
在本文中,你将使用 Graph 资源管理器向 Microsoft Graph API 发出请求,以检索、添加、删除和更新数据。 Graph 资源管理器是一种开发人员工具,可让你了解Microsoft Graph API。 有关使用 Graph 资源管理器的详细信息,请参阅 Graph 资源管理器入门。
警告
- 本文中列出的请求需要使用 Microsoft 365 帐户登录。 如果需要,一个月的免费试用版可用于Microsoft 365 商业高级版。
- 强烈建议使用测试租户来了解和验证部署过程。 Graph 资源管理器旨在成为一种学习工具。 在继续操作之前,请确保了解 授予许可 和 Graph 资源管理器的 同意类型 。
在浏览器中,转到 Graph 资源管理器,并使用Microsoft Entra用户帐户登录。
可能需要启用 权限才能
WindowsUpdates.ReadWrite.All
使用本文中的查询。 启用权限:发出请求:
- 从 HTTP 方法的下拉列表中选择“GET”、“POST”、“PUT”、“PATCH”或“删除”。
- 在 URL 字段中输入请求。 版本将根据 URL 自动填充。
- 如果需要修改请求正文,请编辑“ 请求正文 ”选项卡。
- 选择“ 运行查询 ”按钮。 结果将显示在 “响应 ”窗口中。
提示
查看 Microsoft Graph 文档时,你可能会注意到示例请求通常列出
content-type: application/json
。content-type
Graph 资源管理器通常不需要指定,但可以通过选择“标头”选项卡,将 添加到“请求标头”字段作为键和application/json
“值”,将其添加到content-type
请求中。
运行查询以标识设备
使用 设备 资源类型查找要注册到 Windows 自动修补的客户端。 更改查询参数以满足特定需求。 有关详细信息,请参阅 使用查询参数。
显示所有 设备的 AzureAD 设备 ID 和 名称 :
GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName
显示名称以 开头
Test
的设备的 AzureAD 设备 ID 和名称:GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName
为高级查询添加请求标头
对于后续请求,请将 ConsistencyLevel 标头设置为 eventual
。 有关高级查询参数的详细信息,请参阅有关Microsoft Entra目录对象的高级查询功能。
在 Graph 资源管理器中,选择“ 请求标头 ”选项卡。
对于 中的
ConsistencyLevel
键类型,对于“值”,请键入eventual
。选择“ 添加 ”按钮。 完成后,通过选择垃圾桶图标删除请求标头。
显示作为 AzureAD 设备 ID 的设备
01234567-89ab-cdef-0123-456789abcdef
的名称和操作系统版本:GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"&$select=displayName,operatingSystemVersion
若要查找可能不是虚拟机的设备,请筛选未将虚拟机列为模型但列出制造商的设备。 显示每个设备的 AzureAD 设备 ID、名称和操作系统版本:
GET https://graph.microsoft.com/v1.0/devices?$filter=model ne 'virtual machine' and NOT(manufacturer eq null)&$count=true&$select=deviceid,displayName,operatingSystemVersion
提示
使用 设备 资源类型的请求通常同时 id
具有 和 deviceid
:
-
deviceid
是Microsoft Entra设备 ID,本文将使用 。- 在本文的后面部分,在发出某些请求(例如将设备添加到部署受众)时,将
deviceid
用作id
。
- 在本文的后面部分,在发出某些请求(例如将设备添加到部署受众)时,将
-
id
来自设备资源类型的 通常是 Microsoft Entra 对象 ID,本文中不会用到此 ID。
列出加速更新的目录条目
每个更新都与唯一的 目录条目相关联。 可以查询目录以查找可加速的更新。
id
返回的 是目录 ID,用于创建部署。 以下查询列出了可由 Windows 自动修补部署为快速更新的所有安全和非安全 质量更新。 使用 $top=2
和 排序依据 ReleaseDateTimeshows
显示可部署为快速的最新更新。
GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry') and microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/isExpeditable eq true&$orderby=releaseDateTime desc&$top=2
以下截断响应显示安全更新的e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5
08/08/2023 - 2023.08 B SecurityUpdate for Windows 10 and later
目录 ID:
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries",
"value": [
{
"@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry",
"id": "e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5",
"displayName": "08/08/2023 - 2023.08 B SecurityUpdate for Windows 10 and later",
"deployableUntilDateTime": null,
"releaseDateTime": "2023-08-08T00:00:00Z",
"isExpeditable": true,
"qualityUpdateClassification": "security",
"catalogName": "2023-08 Cumulative Update for Windows 10 and later",
"shortName": "2023.08 B",
"qualityUpdateCadence": "monthly",
"cveSeverityInformation": {
"maxSeverity": "critical",
"maxBaseScore": 9.8,
"exploitedCves@odata.context": "https://graph.microsoft.com/$metadata#admin/windows/updates/catalog/entries('e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5')/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/cveSeverityInformation/exploitedCves",
"exploitedCves": [
{
"number": "ADV230003",
"url": "https://msrc.microsoft.com/update-guide/vulnerability/ADV230003"
},
{
"number": "CVE-2023-38180",
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-38180"
}
]
}
}
]
}
Windows 自动修补可以显示有关 2023 年 1 月或之后发布的更新的详细信息。 使用 产品修订版 可提供有关更新的其他信息,例如 KB 编号和 MajorVersion.MinorVersion.BuildNumber.UpdateBuildRevision
。 Windows 10和 11 共享相同的主版本和次要版本,但具有不同的内部版本号。
使用以下命令显示最新质量更新的产品修订信息:
GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$expand=microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/productRevisions&$orderby=releaseDateTime desc&$top=1
以下截断响应显示有关 Windows 10 版本 22H2 和 Windows 11 版本 22H2 KB5029263 KB5029244 的信息:
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries(microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/productRevisions())",
"value": [
{
"@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry",
"id": "e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5",
"displayName": "08/08/2023 - 2023.08 B SecurityUpdate for Windows 10 and later",
"deployableUntilDateTime": null,
"releaseDateTime": "2023-08-08T00:00:00Z",
"isExpeditable": true,
"qualityUpdateClassification": "security",
"catalogName": "2023-08 Cumulative Update for Windows 10 and later",
"shortName": "2023.08 B",
"qualityUpdateCadence": "monthly",
"cveSeverityInformation": {
"maxSeverity": "critical",
"maxBaseScore": 9.8,
"exploitedCves@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries('e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5')/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/cveSeverityInformation/exploitedCves",
"exploitedCves": [
{
"number": "ADV230003",
"url": "https://msrc.microsoft.com/update-guide/vulnerability/ADV230003"
},
{
"number": "CVE-2023-38180",
"url": "https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-38180"
}
]
},
"productRevisions@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries('e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5')/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/productRevisions",
"productRevisions": [
{
"id": "10.0.19045.3324",
"displayName": "Windows 10, version 22H2, build 19045.3324",
"releaseDateTime": "2023-08-08T00:00:00Z",
"version": "22H2",
"product": "Windows 10",
"osBuild": {
"majorVersion": 10,
"minorVersion": 0,
"buildNumber": 19045,
"updateBuildRevision": 3324
},
"knowledgeBaseArticle@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries('e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5')/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/productRevisions('10.0.19045.3324')/knowledgeBaseArticle/$entity",
"knowledgeBaseArticle": {
"id": "KB5029244",
"url": "https://support.microsoft.com/help/5029244"
}
},
{
"id": "10.0.22621.2134",
"displayName": "Windows 11, version 22H2, build 22621.2134",
"releaseDateTime": "2023-08-08T00:00:00Z",
"version": "22H2",
"product": "Windows 11",
"osBuild": {
"majorVersion": 10,
"minorVersion": 0,
"buildNumber": 22621,
"updateBuildRevision": 2134
},
"knowledgeBaseArticle@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries('e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5')/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry/productRevisions('10.0.22621.2134')/knowledgeBaseArticle/$entity",
"knowledgeBaseArticle": {
"id": "KB5029263",
"url": "https://support.microsoft.com/help/5029263"
}
},
创建部署
创建部署时,有多个 选项 可用于定义部署的行为方式。 以下示例使用目录条目 ID e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5
创建安全更新的08/08/2023 - 2023.08 B SecurityUpdate for Windows 10 and later
部署,并在请求正文中定义 expedite
和 userExperience
部署选项。
POST https://graph.microsoft.com/beta/admin/windows/updates/deployments
content-type: application/json
{
"@odata.type": "#microsoft.graph.windowsUpdates.deployment",
"content": {
"@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
"catalogEntry": {
"@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry",
"id": "e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5"
}
},
"settings": {
"@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
"expedite": {
"isExpedited": true
},
"userExperience": {
"daysUntilForcedReboot": 2
}
}
}
请求在新创建的 部署 的响应正文中返回 201 Created 响应代码和部署对象,其中包括:
- 新创建的部署的部署 ID
de910e12-3456-7890-abcd-ef1234567890
。 - 新创建的部署访问群体的受众 ID
d39ad1ce-0123-4567-89ab-cdef01234567
。
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments/$entity",
"id": "de910e12-3456-7890-abcd-ef1234567890",
"createdDateTime": "2024-01-30T19:43:37.1672634Z",
"lastModifiedDateTime": "2024-01-30T19:43:37.1672644Z",
"state": {
"effectiveValue": "offering",
"requestedValue": "none",
"reasons": []
},
"content": {
"@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
"catalogEntry@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('073fb534-5cdd-4326-8aa2-a4d29037b60f')/content/microsoft.graph.windowsUpdates.catalogContent/catalogEntry/$entity",
"catalogEntry": {
"@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry",
"id": "e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5",
"displayName": null,
"deployableUntilDateTime": null,
"releaseDateTime": "2023-08-08T00:00:00Z",
"isExpeditable": false,
"qualityUpdateClassification": "security",
"catalogName": null,
"shortName": null,
"qualityUpdateCadence": "monthly",
"cveSeverityInformation": null
}
},
"settings": {
"schedule": null,
"monitoring": null,
"contentApplicability": null,
"userExperience": {
"daysUntilForcedReboot": 2,
"offerAsOptional": null
},
"expedite": {
"isExpedited": true,
"isReadinessTest": false
}
},
"audience@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/audience/$entity",
"audience": {
"id": "d39ad1ce-0123-4567-89ab-cdef01234567",
"applicableContent": []
}
}
将成员添加到部署受众
受众 IDd39ad1ce-0123-4567-89ab-cdef01234567
是在创建部署时创建的。
访问群体 ID 用于将成员添加到部署访问群体。 更新部署受众后,Windows 更新开始根据部署设置向设备提供更新。 只要部署存在并且设备在受众中,更新就会加快。
以下示例使用每个设备的Microsoft Entra ID向部署受众添加两个设备:
POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/updateAudience
content-type: application/json
{
"addMembers": [
{
"@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
"id": "01234567-89ab-cdef-0123-456789abcdef"
},
{
"@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
"id": "01234567-89ab-cdef-0123-456789abcde0"
}
]
}
若要验证是否已将设备添加到受众,请使用 受众 IDd39ad1ce-0123-4567-89ab-cdef01234567
运行以下查询:
GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members
删除部署
若要停止加速部署,请删除部署。 删除部署将阻止向设备提供内容(如果设备尚未收到内容)。 若要继续提供内容,需要创建新的审批。
以下示例删除部署 ID 为 的 de910e12-3456-7890-abcd-ef1234567890
部署:
DELETE https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890
用于加速更新的就绪性测试
可以使用 isReadinessTest 验证客户端是否准备好接收加速更新。 创建一个部署,指定它是快速就绪测试,然后将成员添加到部署受众。 该服务将检查,以查看客户端是否满足加速更新的先决条件。 测试结果显示在 Windows 更新 for Business 报表工作簿中。 在“ 质量更新 ”选项卡下,选择“ 加速状态 ”磁贴,这将打开一个浮出控件,其中包含就绪情况测试结果的 “就绪情况 ”选项卡。
POST https://graph.microsoft.com/beta/admin/windows/updates/deployments
content-type: application/json
{
"@odata.type": "#microsoft.graph.windowsUpdates.deployment",
"content": {
"@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
"catalogEntry": {
"@odata.type": "#microsoft.graph.windowsUpdates.qualityUpdateCatalogEntry",
"id": "317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a5"
}
},
"settings": {
"@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
"expedite": {
"isExpedited": true,
"isReadinessTest": true
}
}
}
截断的响应显示 isReadinessTest 设置为 true
,并提供 DeploymentIDde910e12-3456-7890-abcd-ef1234567890
。 然后,可以将成员添加到部署受众,让服务检查设备满足先决条件,然后在 Windows 更新 for Business 报表工作簿中查看结果。
"expedite": {
"isExpedited": true,
"isReadinessTest": true
}
},
"audience@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('6a6c03b5-008e-4b4d-8acd-48144208f179_Readiness')/audience/$entity",
"audience": {
"id": "de910e12-3456-7890-abcd-ef1234567890",
"applicableContent": []
}
更新运行状况工具的日志位置
部署快速更新时,将使用更新运行状况工具。 在某些情况下,你可能希望查看更新运行状况工具的日志。
日志位置: %ProgramFiles%\Microsoft Update Health Tools\Logs
- 日志的格式
.etl
为 。- Microsoft在 GitHub 上提供 PerfView 作为下载,其中显示
.etl
文件。
- Microsoft在 GitHub 上提供 PerfView 作为下载,其中显示
有关详细信息,请参阅 快速更新疑难解答。