驅動程式和韌體更新的程序設計控制件
Windows 自動修補程式設計控件可用來透過Microsoft 圖形 API核准和排程軟體更新。 您可以透過 Graph SDK 直接呼叫 API,或將其與管理工具整合,例如 Microsoft Intune。
本文使用 Graph 總管 逐步解說將驅動程式更新部署至客戶端的整個程式。 在本文中,您將:
必要條件
必須符合所有 Windows 自動修補必要條件 。
權限
本文所列的查詢需要下列許可權:
- WindowsUpdates.ReadWrite.All 適用於 Windows 自動修補 作業。
- 至少 要有 Device.Read.All 許可權可顯示 裝置 資訊。
某些角色,例如 Windows Update 部署系統管理員,已經擁有這些許可權。
必要的端點
您必須能夠存取下列端點:
- *.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 總管向 Microsoft Graph API 提出要求,以擷取、新增、刪除和更新數據。 Graph 總管是開發人員工具,可讓您瞭解 Graph API Microsoft。 如需使用 Graph 總管的詳細資訊,請 參閱開始使用 Graph 總管。
警告
從瀏覽器,移至 [Graph 總管],然後使用 Microsoft Entra 用戶帳戶登入。
您可能需要啟
WindowsUpdates.ReadWrite.All
用許可權,才能使用本文中的查詢。 若要啟用權限:若要提出要求:
- 從 HTTP 方法的下拉式清單中選取 GET、POST、PUT、PATCH 或 DELETE。
- 在 [URL] 欄位中輸入要求。 版本會根據 URL 自動填入。
- 如果您需要修改要求本文,請編輯 [ 要求本文] 索引標籤。
- 選取 [ 執行查詢] 按鈕。 結果會出現在 [ 回應 ] 視窗中。
提示
檢閱 Microsoft Graph 檔時,您可能會注意到範例要求通常會列出
content-type: application/json
。content-type
Graph 總管通常不需要指定 ,但您可以選取 [標頭] 索引標籤,並將 新content-type
增至 [要求標頭] 字段做為 [索引鍵] 和application/json
[值],將它新增至要求。
執行查詢以識別裝置
使用 裝置 資源類型來尋找要註冊 Windows 自動修補的用戶端。 變更查詢參數以符合您的特定需求。 如需詳細資訊,請 參閱使用查詢參數。
顯示 所有裝置的 AzureAD 裝置識別碼 和 名稱 :
GET https://graph.microsoft.com/v1.0/devices?$select=deviceid,displayName
顯示名稱開頭
Test
為 之裝置的 AzureAD 裝置識別碼和名稱:GET https://graph.microsoft.com/v1.0/devices?$filter=startswith(displayName,'Test')&$select=deviceid,displayName
新增進階查詢的要求標頭
針對下一個要求,將 ConsistencyLevel 標頭設定為 eventual
。 如需進階查詢參數的詳細資訊,請參閱 Microsoft Entra 目錄對象的進階查詢功能。
在 [圖形總管] 中,選取 [ 要求標頭] 索引卷 標。
針對 中的索引
ConsistencyLevel
鍵類型,以及 Value 的 索引鍵類型,輸入eventual
。選取 [ 新增] 按鈕。 當您完成時,請選取垃圾桶圖示來移除要求標頭。
顯示具有 作為 AzureAD 裝置識別碼之裝置
01234567-89ab-cdef-0123-456789abcdef
的名稱和作業系統版本:GET https://graph.microsoft.com/v1.0/devices?$search="deviceid:01234567-89ab-cdef-0123-456789abcdef"&$select=displayName,operatingSystemVersion
若要尋找可能不是虛擬機的裝置,請篩選未將虛擬機列為模型但已列出製造商的裝置。 顯示每個 裝置的 AzureAD 裝置識別碼、 名稱和 作業系統版本 :
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 裝置識別碼,將在本文中使用。- 在本文稍後,
deviceid
當您提出某些要求,例如將裝置新增至部署物件時,這會作為id
。
- 在本文稍後,
- 來自
id
裝置資源類型的 通常是 Microsoft Entra 物件標識符,本文不會使用此標識符。
註冊裝置
當您將裝置註冊到驅動程式管理時,Windows 自動修補會成為來自 Windows Update的驅動程式更新授權單位。 在手動建立部署或經核准新增至驅動程式更新原則之前,裝置不會從 Windows Update 接收驅動程式或韌體。
您可以根據您想要接收的更新類型來註冊裝置。 目前,您可以註冊裝置來接收功能更新, () feature
或驅動程式 (driver
) 。 您可以註冊裝置以接收來自多個更新分類的更新。
- 若要註冊裝置,請使用 enrollAssets POST 到 updatableAssets。 下列範例會註冊三個裝置來接收驅動程式更新:
在 [圖形總管] 中,從 HTTP 動詞命令的下拉式清單中選取 [ POST ]。
在 [URL] 欄位中輸入下列要求:
https://graph.microsoft.com/beta/admin/windows/updates/updatableAssets/enrollAssets
在 [ 要求本文] 索引標籤中,輸入下列 JSON,並提供下列資訊:
-
Microsoft Entra 裝置標識碼為
id
- 或
feature
driver
updateCategory
{ "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" } ] }
-
Microsoft Entra 裝置標識碼為
選取 [ 執行查詢] 按鈕。 結果會出現在 [ 回應 ] 視窗中。 在此情況下,為的
202 Accepted
HTTP 狀態代碼。
建立部署物件並新增對象成員
部署物件是您想要部署更新的目標裝置集合。 必須先建立對象,然後將成員新增至物件。 使用下列步驟來建立部署物件、新增成員,並加以驗證:
若要建立新的物件,請使用 的要求主體
{}
POST 至部署對象資源。POST https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences content-type: application/json {}
POST 會傳回 的 HTTP 狀態代碼
201 Created
,做為具有下列主體的回應,其中id
是 物件識別碼:{ "@odata.context": "https://graph.microsoft.com/beta/$metadata#admin/windows/updates/deploymentAudiences/$entity", "id": "d39ad1ce-0123-4567-89ab-cdef01234567", "reportingDeviceCount": 0, "applicableContent": [] }
使用裝置 Microsoft Entra ID 將裝置新增至部署物件,使其成為對象成員。 在 [URL] 字段中指定部署 物件識別 碼,並在要求本文中指定要新增的裝置。 屬性
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" } ] }
若要確認裝置已新增至物件,請使用 的
d39ad1ce-0123-4567-89ab-cdef01234567
物件識別碼執行下列查詢:GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/members
一旦裝置註冊並新增至部署對象之後,Windows Autopatch 就會開始從 Windows Update 收集掃描結果,以建置要流覽、核准及排程部署的適用驅動程序目錄。
建立更新原則
更新原則會定義如何將內容部署至部署物件。 更新原則可確保部署物件的部署行為一致,而不需要建立和管理多個個別部署。 當內容核准新增至原則時,它會部署到相關聯物件中的裝置。 部署和監視設定是選擇性的。
建立原則並稍後定義設定
若要建立不含任何部署設定的原則,請在要求本文中將 物件識別元 指定為 id
。 在下列範例中, 對象標識碼 是 d39ad1ce-0123-4567-89ab-cdef01234567
,而 id
回應中指定的 是 原則標識碼:
POST https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies
content-type: application/json
{
"audience": {
"id": "d39ad1ce-0123-4567-89ab-cdef01234567"
}
}
回應傳回原則,但未指定任何額外的設定,且原則 標識碼 為 9011c330-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
- 定義任何 部署設定。
-
content-length
如果發生狀態代碼 411,請將標頭新增至要求。 值應該是要求本文的長度,以位元組為單位。 如需錯誤碼的相關信息, 請參閱 Microsoft Graph 錯誤回應和資源類型。
在下列驅動程式更新原則範例中,內容核准所建立的任何部署都會在核准 對象標識d39ad1ce-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"
}
]
}
檢閱和編輯更新原則設定
若要檢閱原則設定,請使用原則 識別碼執行下列查詢,例如 9011c330-1234-5678-9abc-def012345678
:
GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678
若要編輯原則設定,請使用原則標識碼修補原則。 執行下列 PATCH 來自動核准建議 Microsoft
用於部署 原則識別9011c330-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
- 描述更新的資訊,例如名稱和版本。
若要顯示 適用的內容,請使用 物件識別碼執行查詢,例如 d39ad1ce-0123-4567-89ab-cdef01234567
:
GET https://graph.microsoft.com/beta/admin/windows/updates/deploymentAudiences/d39ad1ce-0123-4567-89ab-cdef01234567/applicableContent
下列截斷的回應會顯示:
的 Microsoft Entra ID
01234567-89ab-cdef-0123-456789abcdef
的目錄識別碼
5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c
"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"
核准部署的驅動程序內容
每個驅動程式更新都會與唯一 的目錄專案相關聯。 將目錄專案 的內容核准 新增至現有原則,以核准驅動程式和韌體的內容。 內容核准是原則的 合規性變更 。
將內容核准新增至現有原則,也即使用目錄 標識9011c330-1234-5678-9abc-def012345678
碼更新驅動程序的原則 標識符5d6dede684ba5c4a731d62d9c9c2a99db12c5e6015e9f8ad00f3e9387c7f399c
。 排程 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
,也就是 合規性變更標識碼。
合規性變更識別碼位於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",
檢閱原則的所有合規性變更,並先檢閱回應中列出的最新變更。 下列範例會傳回具有原則 標識9011c330-1234-5678-9abc-def012345678
符之原則的合規性變更,並依遞減順序排序 createdDateTime
:
GET https://graph.microsoft.com/beta/admin/windows/updates/updatePolicies/9011c330-1234-5678-9abc-def012345678/complianceChanges?orderby=createdDateTime desc
提示
原則的每個目錄標識碼應該只有一個合規性變更標識碼。 如果相同目錄標識碼有多個相容性變更標識符,則針對以相同對象為目標但具有不同部署行為的相同內容片段,很可能會有多個部署。 若要移除重複專案,請刪除具有重複目錄標識碼的相容性變更。 刪除合規性變更會將核准所建立的任何部署標示為 archived
。
若要擷取部署標識碼,請使用 expand 參數 來檢閱與內容核准相關的部署資訊。 下列範例會顯示更新原則標識9011c330-1234-5678-9abc-def012345678
碼中合規性變更標識c03911a7-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
編輯內容核准的部署設定
由於內容核准是原則的合規性變更,因此當您 更新內容核准時,您正在編輯原則的合規性變更。 下列範例會將更新原則標識9011c330-1234-5678-9abc-def012345678
符中 之合規性變更標識c03911a7-9876-5432-10ab-cdef98765432
符的 變更startDateTime
為 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 自動修補取消註冊。 就像 註冊裝置一樣,請指定 driver
或 feature
做為 的 updateCategory
值。 裝置將不再收到來自指定更新類別之 Windows 自動修補的更新。 視裝置的設定而定,它可能會開始接收來自 Windows Update 的更新。 例如,如果裝置仍在註冊功能更新,但已從驅動程式取消註冊:
- 來自服務的現有驅動程式部署將不會提供給裝置
- 裝置會繼續從 Windows 自動修補接收功能更新
- 根據裝置的組態,驅動程式可能會從 Windows Update 開始安裝
若要取消註冊裝置,請使用 unenrollAssets 將 POST 取消註冊至 updatableAssets。 在要求本文中,指定:
-
Microsoft Entra 裝置標識
id
碼作為裝置 - 或
feature
driver
updateCategory
下列範例會移除兩個 driver
裝置的註冊, 01234567-89ab-cdef-0123-456789abcdef
以及 01234567-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 Update 驅動程序的原則
下列原則會排除裝置 Windows Update 的驅動程式:
-
排除驅動程序的原則位置:
-
群組原則:
\Windows Components\Windows Update\Do not include drivers with Windows Updates
設定為enabled
-
CSP: ExcludeWUDriversInQualityUpdate 設定為
1
-
登錄:
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\ExcludeWUDriversFromQualityUpdates
設定為1
-
Intune:將更新通道設定為 的 Windows 驅動程式更新設定
Block
-
群組原則:
行為:具有驅動程式排除原則的裝置,已註冊 驅動程式 並新增至物件:
- 將會顯示適用的驅動程序內容
- 不會安裝已核准的驅動程式
- 如果驅動程式部署到封鎖它們的裝置,Windows 自動修補會顯示提供驅動程式,並報告顯示安裝擱置中。
定義驅動程式更新來源的原則
下列原則會將驅動程式更新的來源定義為 Windows Update 或 Windows Server Update Service (WSUS) :
-
定義更新來源的原則位置:
-
群組原則:
\Windows Components\Windows Update\Manage updates offered from Windows Server Update Service\Specify source service for specific classes of Windows Updates
將 設為enabled
,Driver Updates
並將 選項設為Windows Update
-
CSP:SetPolicyDrivenUpdateSourceForDriverUpdates 設定
0
為 ,以作為來源 Windows Update -
登入:
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\SetPolicyDrivenUpdateSourceForDriverUpdates
設定為0
。 在下\AU
,UseUpdateClassPolicySource
也必須設定為1
- Intune:不適用。 Intune 使用商務用 Windows Update 部署更新。 Configuration Manager的共同管理客戶端,以及設定為 Intune 的 Windows Update 原則工作負載,也會使用商務用 Windows Update。
-
群組原則:
行為:具有這些更新來源原則的裝置已註冊 驅動程式 並新增至物件:
- 將會顯示適用的驅動程序內容
- 將會安裝已核准的驅動程式
注意
當驅動程式的掃描來源設定為 WSUS 時,Windows 自動修補不會從裝置取得清查事件。 這表示 Windows Autopatch 將無法報告裝置的驅動程式適用性。