加速 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 更新部署管理员)已具有这些权限。

所需的终结点

必须有权访问以下终结点:

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 资源管理器的 同意类型
  1. 在浏览器中,转到 Graph 资源管理器,并使用Microsoft Entra用户帐户登录。

  2. 可能需要启用 权限才能WindowsUpdates.ReadWrite.All使用本文中的查询。 启用权限:

    1. 在 Graph 资源管理器中选择 “修改权限 ”选项卡。
    2. 在“权限”对话框中,选择“ WindowsUpdates.ReadWrite.All ”权限,然后选择“ 同意”。 可能需要再次登录才能授予许可。 Graph 资源管理器中“修改权限”选项卡的屏幕截图
  3. 发出请求:

    1. 从 HTTP 方法的下拉列表中选择“GET”、“POST”、“PUT”、“PATCH”或“删除”。
    2. 在 URL 字段中输入请求。 版本将根据 URL 自动填充。
    3. 如果需要修改请求正文,请编辑“ 请求正文 ”选项卡。
    4. 选择“ 运行查询 ”按钮。 结果将显示在 “响应 ”窗口中。

    提示

    查看 Microsoft Graph 文档时,你可能会注意到示例请求通常列出 content-type: application/jsoncontent-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目录对象的高级查询功能

  1. 在 Graph 资源管理器中,选择“ 请求标头 ”选项卡。

  2. 对于 中的ConsistencyLevel类型,对于“值”,请键入 eventual

  3. 选择“ 添加 ”按钮。 完成后,通过选择垃圾桶图标删除请求标头。

    Graph 资源管理器中请求标头选项卡的屏幕截图

  • 显示作为 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

  • deviceidMicrosoft 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

以下截断响应显示安全更新的e317aa8a0455ca604de95329b524ec921ca57f2e6ed3ff88aac757a7468998a508/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部署,并在请求正文中定义 expediteuserExperience 部署选项。

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 响应代码和部署对象,其中包括:

  • 新创建的部署的部署 IDde910e12-3456-7890-abcd-ef1234567890
  • 新创建的部署访问群体的受众 IDd39ad1ce-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

有关详细信息,请参阅 快速更新疑难解答