使用 Windows 更新 for Business 部署服务管理驱动程序审批

使用 Windows 更新 for Business 部署服务,可以将 Windows 更新部署到Microsoft Entra租户中的设备。 目前,部署服务支持部署Windows 10和Windows 11功能更新、加速质量更新和驱动程序更新。 本主题重点介绍如何管理驱动程序更新的部署。 有关部署功能更新的信息,请参阅 部署功能更新。 有关部署加速质量更新的信息,请参阅 部署加速质量更新

在 Windows 更新 for Business 部署服务中注册的设备扫描Windows 更新时,部署服务会收集比设备上当前安装的驱动程序更好的适用驱动程序的扫描结果。 然后,该服务会对其进行编录,以便浏览、批准和计划部署。 只有使用部署服务批准的内容才提供给设备,只要它在驱动程序管理中保持注册状态。

先决条件

设备必须满足 部署服务的先决条件

步骤 1:在驱动程序管理中注册设备

在驱动程序管理中注册设备时,部署服务将成为来自 Windows 更新 的驱动程序更新的颁发机构。 因此,设备在创建部署或通过批准将其添加到驱动程序更新策略之前,不会从Windows 更新接收驱动程序。 若要注册设备,必须提供 azureADDevice ID。

请求

POST https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets
Content-Type: application/json
{
  "updateCategory": "driver",
  "assets": [
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
      "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b1"
    },
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
      "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b2"
    },
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
      "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b3"
    }
  ]
}

响应

HTTP/1.1 202 Accepted

步骤 2:创建用于接收更新的部署受众

在部署服务注册和管理设备后,可以将其置于 部署受众中。 部署访问群体指定要部署的内容、部署内容的方式和时间,以及目标设备。

以下示例演示如何创建部署访问群体。 下一步将指定目标设备。

请求

POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences
Content-Type: application/json
{
}

响应

HTTP/1.1 201 Created
Content-Type: application/json
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity",
    "id": "f660d844-30b7-46e4-a6cf-47e36164d3cb",
    "applicableContent": []
}

步骤 3:将设备分配给部署受众

创建 部署访问群体 后,可以将设备分配给部署访问群体。 成功更新部署受众后,Windows 更新 for Business 部署服务将开始从Windows 更新收集扫描结果,以生成要浏览、批准和计划部署的适用驱动程序的目录。

以下示例演示如何将Microsoft Entra设备添加为部署访问群体的成员。

请求

POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/updateAudience
Content-type: application/json
{
    "addMembers": [
        {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b1"
        },
        {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b2"
        },
        {
            "@odata.type": "#microsoft.graph.windowsUpdates.azureADDevice",
            "id": "fb95f07d-9e73-411d-99ab-7eca3a5122b3"
        }
    ]
}

响应

HTTP/1.1 202 Accepted

步骤 4:创建更新策略

将设备添加到部署访问群体后,可以创建 一个更新策略 ,用于控制将内容部署到关联的部署访问群体。 更新策略是一个高级模板,因此可以采用类似方式为给定受众部署内容,而无需创建、管理和关联单个部署。 将内容审批添加到策略时,内容将部署到关联受众中的设备。

以下示例演示如何创建更新策略并为其分配现有部署访问群体。

请求

POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies
Content-type: application/json
{
  "audience": {
    "@odata.id": "f660d844-30b7-46e4-a6cf-47e36164d3cb1"
  }
}

响应

HTTP/1.1 202 Accepted
Content-type: application/json
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity",
    "id": "d7a89208-17c5-4daf-a164-ce176b00e4ef",
    "createdDateTime": "2023-01-19T07:58:01.9721459Z",
    "autoEnrollmentUpdateCategories": [],
    "complianceChangeRules": [],
    "deploymentSettings": {
        "schedule": null,
        "monitoring": null,
        "contentApplicability": null,
        "userExperience": null,
        "expedite": null
    }
}

步骤 5:获取驱动程序更新清单

将设备添加到部署受众后,可以浏览和查看驱动程序和固件 的适用内容 目录,这些内容比当前安装在部署访问群体中的设备集合上的内容要好。 适用内容还提供匹配的设备列表,其中包含适用于每个驱动程序的Microsoft Entra设备。

以下示例演示如何获取现有部署受众中设备可用的驱动程序更新清单。 注意:每页结果最多返回 100 个目录条目。 使用返回的继续标记查看更多结果。

请求

GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent?$expand=catalogEntry,matchedDevices

响应

HTTP/1.1 200 OK
Content-type: application/json
{
    "value": [
        {
            "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences('f660d844-30b7-46e4-a6cf-47e36164d3cb')/applicableContent", 
            "catalogEntryId": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c,
             "catalogEntry": {
                "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry",
                "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c",
                "displayName": "",
                "deployableUntilDateTime": null,
                "releaseDateTime": "",
                "description": "",
                "driverClass": "",
                "provider": "",
                "setupInformationFile": null,
                "manufacturer": "",
                "version": "",
                "versionDateTime": ""
            }, 
              "matchedDevices": [], 
              "matchedDevices@odata.nextLink":"https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent/5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c/matchedDevices"
        }, 
        ...99 entries
    ], 
    "@odata.nextLink":"https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent?$expand=catalogEntry&$skiptoken=%5b%7B%22token%22%3a%22%2bRID%3a~nx5uAPpQsrzgSQAAAAAAA%3d7b1e923b%22range%22%3a%7b22min%22%3a%max%22%3a22FF%227D%7D%5d"
}

由于列表的大小 matchedDevice 很大,当调用方展开 navigation 属性 matchedDevices 时,默认返回行为是一个空集合和一个继续标记,用于获取结果的第一页。 以下示例演示如何获取给定 catalogEntry的匹配项的列表。 注意:每页结果最多返回 100 台设备。 使用返回的继续标记查看更多结果。

请求

GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent/5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c/matchedDevices

响应

HTTP/1.1 200 OK
Content-type: application/json
{
    "value": [
        {   
          "deviceId": "id-1",
          "recommendedBy": ["Microsoft", "Contoso"]             
        }, 
        {   
          "deviceId": "id-2",
          "recommendedBy": ["Microsoft", "Contoso"]             
        }, 
        {   
          "deviceId": "id-3",
          "recommendedBy": ["Microsoft", "Contoso"]             
        }, 
        ...97 entries
    ], 
   "@odata.nextLink":"https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/f660d844-30b7-46e4-a6cf-47e36164d3cb/applicableContent/5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c/matchedDevices?$skiptoken=deviceId:{id-97}"
}

步骤 5:创建驱动程序审批

驱动程序更新的部署是通过 合规性更改在策略上创建的并强制执行的。 通过指定与特定驱动程序更新关联的目录条目,将驱动程序更新的内容审批添加到策略。 只有在获得批准后,才会将内容传递到与更新策略关联的部署访问群体中的设备。

以下示例演示如何向现有策略添加内容审批。

请求

POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/d7a89208-17c5-4daf-a164-ce176b00e4ef/complianceChanges
Content-type: application/json
{
    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "content":{
        "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
        "catalogEntry":{
            "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry",
            "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c"
        }
    },
    "deploymentSettings": {
        "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
        "schedule": {
            "startDateTime": "2023-02-14T01:00:00Z"
        }
    }    
}

响应

HTTP/1.1 201 Created
Content-type: application/json
{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies('d7a89208-17c5-4daf-a164-ce176b00e4ef')/complianceChanges/$entity",
    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "id": "dbf29574-ffd9-49cf-87f2-f03629e596ba",
    "createdDateTime": "2023-01-19T08:41:29.3840994Z",
    "isRevoked": false,
    "revokedDateTime": "0001-01-01T00:00:00Z",
    "content": {
        "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent"
        "catalogEntry@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies('d7a89208-17c5-4daf-a164-ce176b00e4ef')/complianceChanges('dbf29574-ffd9-49cf-87f2-f03629e596ba')/microsoft.graph.windowsUpdates.contentApproval/content/microsoft.graph.windowsUpdates.catalogContent/catalogEntry/$entity",
        "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c",
        "displayName": "Microsoft - Test - 1.0.0.1",
        "deployableUntilDateTime": null,
        "releaseDateTime": "0001-01-21T04:18:32Z",
        "description": "Microsoft test driver update released in January 2021",
        "driverClass": "OtherHardware",
        "provider": "Microsoft",
        "setupInformationFile": null,
        "manufacturer": "Microsoft",
        "version": "1.0.0.1",
        "versionDateTime": "2021-01-11T02:43:14Z"
        }        
    },
    "deploymentSettings": {
        "schedule": null,
        "monitoring": null,
        "contentApplicability": null,
        "userExperience": null,
        "expedite": null
        "schedule": {
            "startDateTime": "2023-02-14T01:00:00Z",
            "gradualRollout": {
                "@odata.type": "#microsoft.graph.windowsUpdates.rateDrivenRolloutSettings",
                "durationBetweenOffers": "P1D",
                "devicesPerOffer": 0
            }
        }
    }
}

在驱动程序部署期间

在部署过程中,可以通过将 isRevoked 属性设置为 true来更新其访问群体成员,以及防止内容提供给设备(如果他们尚未收到内容)。 这是暂停部署的可审核方式,将自动填充 revokedByrevokedDateTime 属性。 若要继续提供内容,请创建新的审批。

请求

PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/d7a89208-17c5-4daf-a164-ce176b00e4ef/complianceChanges/dbf29574-ffd9-49cf-87f2-f03629e596ba
Content-type: application/json
{
    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "isRevoked": true
}

响应

HTTP/1.1 204 No Content

取消注册驱动程序管理

如果为给定更新类别的服务从管理中取消注册设备,则设备不再由部署服务管理,并且可能会根据其策略配置开始从Windows 更新接收其他更新。 将从包含给定更新类别内容的所有访问群体和部署中删除未注册的设备。 设备仍向服务注册,并且仍在注册并接收其他更新类别的内容 ((如果适用) )。

请求

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": "fb95f07d-9e73-411d-99ab-7eca3a5122b1"
    }
  ]
}

响应

HTTP/1.1 202 Accepted