使用 Windows 更新 for Business 部署服务部署功能更新

Windows 更新 for Business 部署服务用于批准和计划软件更新。 部署服务通过 Microsoft 图形 API公开其功能。 可以直接通过图形 SDK 调用 API,也可以将其与管理工具(如 Microsoft Intune)集成。

本文使用 Graph 资源管理器 演练将功能更新部署到客户端的整个过程。 在本文中,你将:

在本文中,你将:

必备条件

必须满足 Windows 更新 for Business 部署服务的所有先决条件

权限

本文中列出的查询需要以下权限:

某些角色(例如Windows 更新部署管理员)已具有这些权限。

打开 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请求中。

运行查询以标识设备

使用 设备 资源类型查找要注册到部署服务的客户端。 更改查询参数以满足特定需求。 有关详细信息,请参阅 使用查询参数

  • 显示所有 设备的 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。

注册设备

将设备注册到功能更新管理中时,部署服务将成为来自 Windows 更新 的功能更新的颁发机构。 只要设备通过部署服务在功能更新管理中保持注册状态,设备就不会从Windows 更新接收任何其他功能更新,除非使用部署服务显式部署。 如果设备尚未收到更新,则会为其提供指定的功能更新。 例如,如果将Windows 11功能更新版本 22H2 部署到已注册到功能更新管理并且当前使用的是较旧版本的 Windows 11 的设备,则设备将更新到版本 22H2。 如果设备已运行版本 22H2 或更高版本,它将保持其当前版本。

提示

Windows 更新 for Business 报表具有一个工作簿,用于显示设备的当前操作系统版本。 在工作簿中,转到“ 功能更新 ”选项卡,在 “服务中功能更新 ”磁贴中,选择“ 查看详细信息” 链接以打开详细信息浮出控件。 设备的 OS 版本和Microsoft Entra ID可以轻松地导出到 .csv 文件或在 Azure Monitor 日志中打开,以帮助创建部署受众。

根据希望设备接收的更新类型注册设备。 目前,可以注册设备以接收) (feature) 或驱动程序 (driver 功能更新。 可以注册设备以接收来自多个更新分类的更新。

  1. 若要注册设备,请 POST 到使用 enrollAssets 的 updateableAssets 以下示例注册三个设备以接收驱动程序更新:
    1. 在 Graph 资源管理器中 ,从 HTTP 谓词的下拉列表中选择 POST。

    2. 在 URL 字段中输入以下请求:
      https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets

    3. 在“ 请求正文 ”选项卡中,输入以下 JSON,并提供以下信息:

      • Microsoft Entra设备 IDid
      • feature updateCategory 的 或driver
      {
        "updateCategory": "driver",
        "assets": [
          {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "01234567-89ab-cdef-0123-456789abcdef"
          },
          {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "01234567-89ab-cdef-0123-456789abcde0"
          },
          {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "01234567-89ab-cdef-0123-456789abcde1"
          }
        ]
      }
      
    4. 选择“ 运行查询 ”按钮。 结果将显示在 “响应 ”窗口中。 在这种情况下,为 的 202 AcceptedHTTP 状态代码。

      通过 Graph 资源管理器成功注册资产的屏幕截图。

列出功能更新的目录条目

每个功能更新都与唯一的 目录条目相关联。 id返回的 是目录 ID,用于创建部署。 功能更新在达到其支持停用日期之前可部署。 有关详细信息,请参阅Windows 10Windows 11企业版和教育版的支持生命周期日期。 以下查询列出了所有可部署的功能更新目录条目:

GET https://graph.microsoft.com/beta/admin/windows/updates/catalog/entries?$filter=isof('microsoft.graph.windowsUpdates.featureUpdateCatalogEntry')

以下截断响应显示Windows 11版本 22H2 功能更新的d9049ddb-0ca8-4bc1-bd3c-41a456ef300f目录 ID

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/catalog/entries",
    "value": [
        {
            "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry",
            "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f",
            "displayName": "Windows 11, version 22H2",
            "deployableUntilDateTime": "2025-10-14T00:00:00Z",
            "releaseDateTime": "2022-09-20T00:00:00Z",
            "version": "Windows 11, version 22H2",
            "buildNumber": "22621"
        }
    ]
}

创建部署

为功能更新创建部署时,有多个选项可用于定义部署的行为方式。 部署和监视设置是可选的。 以下部署设置在示例请求正文中定义,用于部署 Windows 11 版本 22H2 功能更新 () 的d9049ddb-0ca8-4bc1-bd3c-41a456ef300f目录 ID

  • 部署 开始日期 为 2023 年 2 月 14 日上午 5 点 UTC
  • 以每三天 100 台设备的速度逐步推出
  • 如果五台设备回滚功能更新,将暂停部署的监视规则
  • 将所有适用的安全措施应用于部署中的设备的默认安全措施 保留 行为
    • 如果未显式定义保护保留,则会自动应用默认的安全措施保留行为
POST https://graph.microsoft.com/beta/admin/windows/updates/deployments
content-type: application/json

{
    "content": {
        "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
        "catalogEntry": {
            "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry",
            "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f"
        }
    },
    "settings": {
        "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
        "schedule": {
            "startDateTime": "2023-02-14T05:00:00Z",
            "gradualRollout": {
                "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings",
                "durationBetweenOffers": "P3D",
                "devicesPerOffer": "100"
            }
        },
        "monitoring": {
            "monitoringRules": [
                {
                    "signal": "rollback",
                    "threshold": 5,
                    "action": "pauseDeployment"
                }
            ]
        }
    }
}

响应正文将包含:

  • 示例中的新部署 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": "2023-02-07T19:21:15.425905Z",
         "lastModifiedDateTime": "2023-02-07T19:21:15Z",
         "state": {
             "effectiveValue": "scheduled",
             "requestedValue": "none",
             "reasons": []
         },
         "content": {
             "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
             "catalogEntry@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deployments('de910e12-3456-7890-abcd-ef1234567890')/content/microsoft.graph.windowsUpdates.catalogContent/catalogEntry/$entity",
             "catalogEntry": {
                 "@odata.type": "#microsoft.graph.windowsUpdates.featureUpdateCatalogEntry",
                 "id": "d9049ddb-0ca8-4bc1-bd3c-41a456ef300f",
                 "displayName": "Windows 11, version 22H2",
                 "deployableUntilDateTime": "2025-10-14T00:00:00Z",
                 "releaseDateTime": "0001-01-01T00:00:00Z",
                 "version": "Windows 11, version 22H2"
             }
         },
         "settings": {
             "contentApplicability": null,
             "userExperience": null,
             "expedite": null,
             "schedule": {
                 "startDateTime": "2023-02-14T05:00:00Z",
                 "gradualRollout": {
                     "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings",
                     "durationBetweenOffers": "P3D",
                     "devicesPerOffer": 100
                 }
             },
             "monitoring": {
                 "monitoringRules": [
                     {
                         "signal": "rollback",
                         "threshold": 5,
                         "action": "pauseDeployment"
                     }
                 ]
             }
         },
         "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": []
         }
    }
    

编辑部署

若要 更新部署,请按部署 ID 修补部署资源,并在请求正文中提供更新的设置。 以下示例保留创建部署时定义的现有逐步推出设置,但将部署开始日期更改为 2023 年 2 月 28 日上午 5 点 UTC:

PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890
content-type: application/json

{
    "settings": {
        "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
        "schedule": {
            "startDateTime": "2023-02-28T05:00:00Z",
            "gradualRollout": {
                "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings",
                "durationBetweenOffers": "P3D",
                "devicesPerOffer": "100"
            }
        }
    }
}

使用部署 ID 验证部署的 de910e12-3456-7890-abcd-ef1234567890部署设置:

GET https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890

将成员添加到部署受众

受众 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"
    },
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
     "id": "01234567-89ab-cdef-0123-456789abcde1"
    }
  ]
}

若要验证是否已将设备添加到受众,请使用 受众 IDd39ad1ce-0123-4567-89ab-cdef01234567运行以下查询:

GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members

暂停部署

若要暂停部署,请修补部署,以便为 deploymentState 提供 requestedValuepaused 。 若要恢复部署,请使用 值 none ,如果部署尚未达到开始日期,则状态将更新为 offeringscheduled

以下示例使用部署 IDde910e12-3456-7890-abcd-ef1234567890暂停部署:


PATCH https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890
content-type: application/json

{
  "@odata.type": "#microsoft.graph.windowsUpdates.deployment",
  "state": {
    "@odata.type": "microsoft.graph.windowsUpdates.deploymentState",
    "requestedValue": "paused"
  }
}

删除部署

若要完全删除部署,请删除部署。 删除部署将阻止向设备提供内容(如果设备尚未收到内容)。 若要继续提供内容,需要创建新的审批。

以下示例删除部署 ID 为 的 de910e12-3456-7890-abcd-ef1234567890部署:

DELETE https://graph.microsoft.com/beta/admin/windows/updates/deployments/de910e12-3456-7890-abcd-ef1234567890

注册设备

当设备不再需要管理时,请从部署服务取消注册它。 就像注册设备一样,将 或 feature 指定driver为 的值updateCategory。 设备将不再从部署服务接收指定更新类别的更新。 根据设备的配置,它可能会开始从Windows 更新接收更新。 例如,如果设备仍已注册功能更新,但已从驱动程序中取消注册:

  • 服务中的现有驱动程序部署不会提供给设备
  • 设备继续从部署服务接收功能更新
  • 驱动程序可能从Windows 更新开始安装,具体取决于设备的配置

若要取消注册设备,请 POST 到使用 unenrollAssets的 updateableAssets。 在请求正文中,指定:

  • Microsoft Entra设备 ID 作为id设备
  • feature updateCategory 的 或driver

以下示例删除两个 driver 设备的注册, 01234567-89ab-cdef-0123-456789abcdef01234567-89ab-cdef-0123-456789abcde0

POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/unenrollAssets
content-type: application/json

{
  "updateCategory": "driver",
  "assets": [
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
      "id": "01234567-89ab-cdef-0123-456789abcdef"
    },
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
      "id": "01234567-89ab-cdef-0123-456789abcde0"
    }
  ]
}