驱动程序和固件更新的编程控件

Windows 自动修补编程控件用于通过Microsoft 图形 API批准和计划软件更新。 可以直接通过图形 SDK 调用 API,也可以将其与管理工具(如 Microsoft Intune)集成。

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

必备条件

必须满足所有 Windows 自动修补先决条件

权限

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

某些角色(例如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。

注册设备

将设备注册到驱动程序管理中时,Windows Autopatch 将成为来自 Windows 更新 的驱动程序更新的颁发机构。 设备在手动创建部署或通过批准将其添加到驱动程序更新策略之前,不会从 Windows 更新 接收驱动程序或固件。

根据希望设备接收的更新类型注册设备。 目前,可以注册设备以接收) (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 资源管理器成功注册资产的屏幕截图。

创建部署访问群体并添加访问群体成员

部署受众是要向其部署更新的设备集合。 首先需要创建访问群体,然后将成员添加到访问群体。 使用以下步骤创建部署访问群体、添加成员并对其进行验证:

  1. 若要创建新的访问群体,请 POST 到请求正文为 的{}部署访问群体资源。

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

    POST 返回 HTTP 状态代码 201 Created 作为响应,正文如下,其中 id访问群体 ID

    {
        "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity",
        "id": "d39ad1ce-0123-4567-89ab-cdef01234567",
        "reportingDeviceCount": 0,
        "applicableContent": []
    }
    
  2. 使用Microsoft Entra ID将设备添加到部署受众,以便它们成为访问群体成员。 在 URL 字段中指定部署 访问群体 ID ,以及要添加到请求正文中的设备。 属性id指定设备的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"
        }
      ]
    }
    
  3. 若要验证是否已将设备添加到受众,请使用 受众 IDd39ad1ce-0123-4567-89ab-cdef01234567运行以下查询:

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

注册设备并将其添加到部署受众后,Windows 自动修补将开始从Windows 更新收集扫描结果,以生成要浏览、批准和计划部署的适用驱动程序的目录。

创建更新策略

更新策略定义如何将内容部署到部署受众。 更新策略可确保对部署受众的部署以一致的方式进行部署,而无需创建和管理多个单独的部署。 将内容审批添加到策略后,它会部署到关联受众中的设备。 部署和监视设置是可选的。

重要提示

内容审批配置的任何部署设置都将与现有更新策略的部署设置相结合。 如果内容审批和更新策略指定相同的部署设置,则使用内容审批中的设置。

创建策略并稍后定义设置

若要创建没有任何部署设置的策略,请在请求正文中将 访问群体 ID 指定为 id。 在以下示例中, 访问群体 IDd39ad1ce-0123-4567-89ab-cdef01234567,响应 id 中给定的 为 策略 ID

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

{
  "audience": {
    "id": "d39ad1ce-0123-4567-89ab-cdef01234567"
  }
}

返回策略的响应,但未指定任何其他设置, 其策略 ID9011c330-1234-5678-9abc-def012345678为 :

HTTP/1.1 202 Accepted
content-type: application/json
{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/updatePolicies/$entity",
  "id": "9011c330-1234-5678-9abc-def012345678",
  "createdDateTime": "2023-01-25T05:32:21.9721459Z",
  "autoEnrollmentUpdateCategories": [],
  "complianceChangeRules": [],
  "deploymentSettings": {
      "schedule": null,
      "monitoring": null,
      "contentApplicability": null,
      "userExperience": null,
      "expedite": null
  }
}

在创建策略期间指定设置

若要创建具有其他设置的策略,请在请求正文中:

  • 访问群体 ID 指定为 id
  • 定义任何 部署设置
  • content-length如果出现状态代码 411,则向请求添加标头。 该值应是请求正文的长度(以字节为单位)。 有关错误代码的信息,请参阅 Microsoft Graph 错误响应和资源类型

在以下驱动程序更新策略示例中,内容审批创建的任何部署将在 批准访问群体 IDd39ad1ce-0123-4567-89ab-cdef01234567 的 7 天后开始:

POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies
content-type: application/json
   
{
  "@odata.type": "#microsoft.graph.windowsUpdates.updatePolicy",
  "audience": {
    "id": "d39ad1ce-0123-4567-89ab-cdef01234567"
  },
  "complianceChanges": [
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval"
    }
  ],
  "complianceChangeRules": [
    {
      "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule",
      "contentFilter": {
        "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter"
      },
      "durationBeforeDeploymentStart": "P7D"
    }
  ]
}

查看和编辑更新策略设置

若要查看策略设置,请使用 策略 ID 运行以下查询,例如 9011c330-1234-5678-9abc-def012345678

GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678

若要编辑策略设置, 请使用 策略 ID 修补策略。 运行以下 PATCH 以自动批准建议 Microsoft用于 部署策略 ID9011c330-1234-5678-9abc-def012345678 的驱动程序内容:

PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678
content-type: application/json

{
    "complianceChangeRules": [
     {
        "@odata.type": "#microsoft.graph.windowsUpdates.contentApprovalRule",
         "contentFilter": {
          "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateFilter"
        }
    }
  ],
    "deploymentSettings": {
       "@odata.type": "#microsoft.graph.windowsUpdates.deploymentSettings",
        "contentApplicability": {
          "@odata.type": "#microsoft.graph.windowsUpdates.contentApplicabilitySettings",
          "offerWhileRecommendedBy": ["microsoft"]
        }
      }
}

查看适用的驱动程序内容

Windows 自动修补从设备获取扫描结果后,可以针对部署受众显示驱动程序和固件更新的适用性。 每个适用的更新都返回以下信息:

  • 用于 id目录条目的
  • 适用于的设备Microsoft Entra ID
  • 描述更新的信息,例如名称和版本。

若要显示 适用内容,请使用 访问群体 ID 运行查询,例如 d39ad1ce-0123-4567-89ab-cdef01234567

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

将显示以下截断响应:

  • Microsoft Entra ID01234567-89ab-cdef-0123-456789abcdef

  • 的目录 ID5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c

    "matchedDevices": [
        {
            "recommendedBy": [
                "Microsoft"
            ],
            "deviceId": "01ea3c90-12f5-4093-a4c9-c1434657c976"
        }
    ],
    "catalogEntry": {
        "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry",
        "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"
    

批准用于部署的驱动程序内容

每个驱动程序更新都与唯一的 目录条目相关联。 通过将目录条目 的内容审批 添加到现有策略来批准驱动程序和固件的内容。 内容审批是策略的 符合性更改

重要提示

为内容审批配置的任何 部署设置 都将与现有 更新策略的 部署设置相结合。 如果内容审批和更新策略指定相同的部署设置,则使用内容审批中的设置。

将内容审批添加到现有策略(包含目录 ID9011c330-1234-5678-9abc-def012345678 的驱动程序更新的策略 ID5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c)。 安排 2023 年 2 月 14 日凌晨 1 点 UTC 的开始日期:

POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/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"
        }
    }
}

内容审批的响应将返回内容和部署设置以及 id,即 合规性更改 ID合规性更改 ID 位于c03911a7-9876-5432-10ab-cdef98765432以下截断响应中:

    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "id": "c03911a7-9876-5432-10ab-cdef98765432",
    "createdDateTime": "2023-02-02T17:54:39.173292Z",
    "isRevoked": false,
    "revokedDateTime": "0001-01-01T00:00:00Z",
    "content": {
        "@odata.type": "#microsoft.graph.windowsUpdates.catalogContent",
        "catalogEntry": {
            "@odata.type": "#microsoft.graph.windowsUpdates.driverUpdateCatalogEntry",
            "id": "5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c"
        }
    },
    "deploymentSettings": {
        "schedule": {
            "startDateTime": "2023-02-14T01:00:00Z",

首先查看策略的所有符合性更改,并首先在响应中列出最新更改。 以下示例返回策略 ID9011c330-1234-5678-9abc-def012345678 为策略的符合性更改,并按 createdDateTime 降序排序:

GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc

提示

对于一个策略,每个目录 ID 只能有一个符合性更改 ID。 如果同一目录 ID 有多个符合性更改 ID,则很可能针对同一受众但部署行为不同的同一部分内容进行多个部署。 若要删除重复项,请删除具有重复目录 ID符合性更改。 删除符合性更改会将审批创建的任何部署标记为 archived

若要检索部署 ID,请使用 expand 参数 查看与内容审批相关的部署信息。 以下示例显示更新策略9011c330-1234-5678-9abc-def012345678ID 中符合性更改 IDc03911a7-9876-5432-10ab-cdef98765432 的内容审批和部署信息:

GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432/$/microsoft.graph.windowsUpdates.contentApproval?$expand=deployments

编辑内容审批的部署设置

由于内容审批是策略的符合性更改,因此 更新内容审批时,你将编辑策略的符合性更改。 以下示例将startDateTime更新策略ID 中符合性更改 ID9011c330-1234-5678-9abc-def012345678c03911a7-9876-5432-10ab-cdef98765432 更改为 2023 年 2 月 28 日上午 5 点 UTC:

PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432
content-type: application/json

{
    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "deploymentSettings": {
        "@odata.type": "microsoft.graph.windowsUpdates.deploymentSettings",
        "schedule": {
            "startDateTime": "2023-02-28T05:00:00Z"
        }
    }
}

撤销内容审批

通过将符合性更改的 属性设置为 isRevoked true,可以撤销对内容的审批。 在部署过程中,可以更改此设置。 但是,撤消只会阻止向设备提供内容(如果设备尚未收到内容)。 若要继续提供内容,需要创建新的 审批

PATCH https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges/c03911a7-9876-5432-10ab-cdef98765432
content-type: application/json

{
    "@odata.type": "#microsoft.graph.windowsUpdates.contentApproval",
    "isRevoked": true
}

若要显示首先返回最近创建的所有部署,请基于 createdDateTime对部署进行排序:

GET https://graph.microsoft.com/beta/admin/windows/updates/deployments?orderby=createdDateTime desc

注册设备

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

  • 服务中的现有驱动程序部署不会提供给设备
  • 设备继续从 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"
    }
  ]
}

驱动程序的策略注意事项

服务可以接收内容审批,但由于设备上的组策略、CSP 或注册表设置,内容不会安装在设备上。 在某些情况下,组织会专门配置这些策略以满足其当前或未来需求。 例如,组织可能希望查看适用的驱动程序内容,但不允许安装。 配置此类行为可能很有用,尤其是在由于组织需求变化而转换驱动程序更新管理时。 以下列表描述了可能影响部署的驱动程序相关更新策略:

从设备Windows 更新中排除驱动程序的策略

以下策略从设备的Windows 更新中排除驱动程序:

  • 排除驱动程序的策略位置
    • 组策略\Windows Components\Windows Update\Do not include drivers with Windows Updates设置为enabled
    • CSPExcludeWUDriversInQualityUpdate 设置为 1
    • 注册表HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\ExcludeWUDriversFromQualityUpdates 设置为 1
    • Intune:更新通道的 Windows 驱动程序更新设置设置为Block

行为:为驱动程序注册并添加到受众的具有 驱动程序 排除策略的设备:

  • 将显示适用的驱动程序内容
  • 不会安装已批准的驱动程序
    • 如果驱动程序已部署到阻止它们的设备,Windows 自动修补将显示提供驱动程序,报告显示安装挂起。

定义驱动程序更新源的策略

以下策略将驱动程序更新的源定义为 Windows 更新 或 Windows Server 更新服务 (WSUS) :

  • 定义更新源的策略的位置
    • 组策略\Windows Components\Windows Update\Manage updates offered from Windows Server Update Service\Specify source service for specific classes of Windows Updates设置为 enabledDriver Updates选项设置为Windows Update
    • CSPSetPolicyDrivenUpdateSourceForDriverUpdates0 设置为 Windows 更新 作为源
    • 注册表HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\SetPolicyDrivenUpdateSourceForDriverUpdates 设置为 0。 在 下 \AUUseUpdateClassPolicySource 还需要将 设置为 1
    • Intune:不适用。 Intune使用 Windows 更新 for Business 部署更新。 Configuration Manager的共同托管客户端,Windows 更新策略的工作负荷设置为 Intune 也将使用 Windows 更新 for Business。

行为:为 驱动程序 注册并添加到受众的具有以下更新源策略的设备:

  • 将显示适用的驱动程序内容
  • 将安装已批准的驱动程序

注意

当驱动程序的扫描源设置为 WSUS 时,Windows 自动修补不会从设备获取清单事件。 这意味着 Windows 自动修补将无法报告驱动程序对设备的适用性。