針對 Azure 自動化狀態設定的問題進行疑難排解
注意
Azure 自動化 狀態設定 將於 2027 年 9 月 30 日淘汰,請依該日期轉換至 Azure 機器組態。 如需詳細資訊,請參閱 部落格文章 公告。 Azure Machine Configuration 服務結合 DSC 延伸模組、Azure 自動化狀態設定,以及客戶意見反應最常要求的功能。 Azure Machine Configuration 也包含混合機器支援 (透過已啟用 Arc 的伺服器提供)。
警告
Azure 自動化 DSC for Linux 已於 2023 年 9 月 30 日淘汰。 如需詳細資訊,請參閱公告。
本文提供在 Azure 自動化 狀態設定 中編譯或部署組態時所發生問題的疑難解答和解決資訊。 如需狀態設定功能的一般資訊,請參閱 Azure 自動化狀態設定概觀。
診斷問題
發生設定方面的編譯或部署錯誤時,以下幾個步驟可協助您診斷問題。
1.確定您的設定在本機電腦上成功編譯
Azure 自動化狀態設定以 PowerShell Desired State Configuration (DSC) 為基礎。 您可以在 PowerShell DSC 中找到 DSC 語言和語法的文件。
您可以在本機電腦上編譯 DSC 設定,以探索並解決常見的錯誤,例如:
- 遺失模組。
- 語法錯誤。
- 邏輯錯誤。
2.在節點上檢視 DSC 記錄
如果您的設定成功編譯,但套用至節點後失敗,您可以在 DSC 記錄中找到詳細資訊。 如需哪裡可找到這些記錄的詳細資訊,請參閱 DSC 事件記錄位於何處。
xDscDiagnostics 模組可協助您剖析來自 DSC 記錄的詳細資訊。 如果您連絡支援人員,他們會需要這些記錄來診斷您的問題。
您可以遵循安裝穩定版模組中的指示,在本機電腦上安裝 xDscDiagnostics
模組。
若要在 Azure 電腦上安裝 xDscDiagnostics
模組,請使用 Invoke-AzVMRunCommand。 您也可以遵循使用執行命令在 Windows VM 中執行 PowerShell 指令碼中的步驟,在 Azure 入口網站中使用 [執行命令] 選項。
如需使用 xDscDiagnostics 的詳細資訊,請參閱使用 xDscDiagnostics 分析 DSC 記錄。 另請參閱 xDscDiagnostics Cmdlet。
3.確定節點和自動化工作區具有必要的模組
DSC 依賴節點上安裝的模組。 當您使用 Azure 自動化狀態設定時,請遵循匯入模組中的步驟,將任何必要的模組匯入到您的自動化帳戶。 設定也可能相依於特定版本的模組。 如需詳細資訊,請參閱針對模組進行疑難排解。
案例:無法從入口網站刪除含有特殊字元的設定
問題
當您嘗試從入口網站刪除 DSC 設定時,您看到下列錯誤:
An error occurred while deleting the DSC configuration '<name>'. Error-details: The argument
configurationName with the value <name> is not valid. Valid configuration names can contain only
letters, numbers, and underscores. The name must start with a letter. The length of the name must be
between 1 and 64 characters.
原因
此錯誤是暫時性問題。 請稍後再試一次。
解決方法
使用 Remove-AzAutomationDscConfiguration Cmdlet 來刪除設定。
案例:無法註冊 DSC 代理程式
問題
當您使用 Set-DscLocalConfigurationManager 或其他 DSC Cmdlet 時,您會收到錯誤。
Registration of the Dsc Agent with the server
https://<location>-agentservice-prod-1.azure-automation.net/accounts/00000000-0000-0000-0000-000000000000
failed. The underlying error is: Failed to register Dsc Agent with AgentId
00000000-0000-0000-0000-000000000000 with the server
https://<location>-agentservice-prod-1.azure-automation.net/accounts/00000000-0000-0000-0000-000000000000/Nodes(AgentId='00000000-0000-0000-0000-000000000000').
+ CategoryInfo : InvalidResult: (root/Microsoft/...gurationManager:String) [], CimException
+ FullyQualifiedErrorId : RegisterDscAgentCommandFailed,Microsoft.PowerShell.DesiredStateConfiguration.Commands.RegisterDscAgentCommand
+ PSComputerName : <computerName>
原因
網路問題可能會導致此錯誤。 檢查您的防火牆設定,或計算機是否位於 Proxy 伺服器後方。
解決方法
請確認電腦可存取 DSC 的適當端點,然後再試一次。 關於所需的連接埠和位址清單,請參閱網路規劃。
案例:狀態報告傳回「未經授權」回應碼
問題
當您向「Azure 自動化狀態設定」註冊節點時,您收到下列其中一個錯誤訊息:
The attempt to send status report to the server https://{your Automation account
URL}/accounts/xxxxxxxxxxxxxxxxxxxxxx/Nodes(AgentId='xxxxxxxxxxxxxxxxxxxxxxxxx')/SendReport returned
unexpected response code Unauthorized.
VM has reported a failure when processing extension 'Microsoft.Powershell.DSC / Registration of the
Dsc Agent with the server failed.
原因
可能原因如下:
不正確或過期的憑證。 請參閱重新註冊節點。
不允許存取
*.azure-automation.net
的 Proxy 組態。 如需詳細資訊,請參閱私人網路的設定。用戶端電腦時間與實際時間有好幾分鐘的差距。 使用下列命令來檢查時間:
w32tm /stripchart /computer:time.windows.com /samples:6
。
解決方法
使用下列步驟來重新註冊失敗的 DSC 節點。
步驟 1:取消註冊節點
- 在 Azure 入口網站中,移至 [首頁]>[自動化帳戶]> (您的自動化帳戶) > [狀態設定 (DSC)]。
- 選取 [節點],然後選取有問題的節點。
- 選取 [取消註冊] 以取消註冊節點。
步驟 2:從節點解除安裝 DSC 擴充功能
- 在 Azure 入口網站中,移至 [首頁]> [虛擬機器]> (失敗節點) > [擴充功能]。
- 選取 PowerShell DSC 擴充功能 [Microsoft.Powershell.DSC]。
- 選取 [解除安裝] 以解除安裝擴充功能。
步驟 3:從節點移除所有錯誤或過期的憑證
在失敗節點上,從提高權限的 PowerShell 命令提示字元中執行下列命令:
$certs = @()
$certs += dir cert:\localmachine\my | ?{$_.FriendlyName -like "DSC"}
$certs += dir cert:\localmachine\my | ?{$_.FriendlyName -like "DSC-OaaS Client Authentication"}
$certs += dir cert:\localmachine\CA | ?{$_.subject -like "CN=AzureDSCExtension*"}
"";"== DSC Certificates found: " + $certs.Count
$certs | FL ThumbPrint,FriendlyName,Subject
If (($certs.Count) -gt 0)
{
ForEach ($Cert in $certs)
{
RD -LiteralPath ($Cert.Pspath)
}
}
步驟 4:重新註冊失敗節點
- 在 Azure 入口網站中,移至 [首頁]>[自動化帳戶]> (您的自動化帳戶) > [狀態設定 (DSC)]。
- 選取 [節點]。
- 選取 [新增]。
- 選取失敗節點。
- 選取 [連線],然後選取您想要的選項。
案例:節點處於失敗狀態,並發生「找不到」錯誤
問題
節點在報告中出現「失敗」狀態,而且發生錯誤:
The attempt to get the action from server
https://<url>//accounts/<account-id>/Nodes(AgentId=<agent-id>)/GetDscAction failed because a valid
configuration <guid> cannot be found.
原因
此錯誤通常起因於將節點指派給設定名稱 (例如 ABC),而不是指派給節點設定 (MOF 檔案) 名稱 (例如 ABC.WebServer)。
解決方法
- 請確定您以「節點設定名稱」來指派節點,而不是使用「設定名稱」。
- 您可以使用 Azure 入口網站或 PowerShell Cmdlet,將節點設定指派給節點。
- 在 Azure 入口網站中,移至 [首頁]>[自動化帳戶]> (您的自動化帳戶) > [狀態設定 (DSC)]。 然後選取節點,再選取 [指派節點設定]。
- 使用 Set-AzAutomationDscNode Cmdlet。
案例:編譯設定時,沒有產生任何節點設定 (MOF 檔案)
問題
您的 DSC 編譯工作因發生下列錯誤而暫停:
Compilation completed successfully, but no node configuration **.mof** files were generated.
原因
當 DSC 設定中在 Node
關鍵字後面的運算式評估為 $null
時,不會產生任何節點設定。
解決方法
使用下列其中一個解決方案來修正問題:
- 請確定設定定義中在
Node
關鍵字旁的運算式不是評估為 Null。 - 如果您在編譯設定時傳遞 ConfigurationData,請確定您傳遞的值符合設定從設定資料中預期的值。
案例:DSC 節點報告變成停留在「進行中」狀態
問題
DSC 代理程式輸出:
No instance found with given property values
原因
如果節點上的 Windows Management Instrumentation (WMI) 損毀,就可能發生此問題。
解決方法
請遵循 DSC 已知問題和限制中的指示進行。
案例:無法在 DSC 組態中使用認證
問題
DSC 編譯工作因為下列錯誤而暫止:
System.InvalidOperationException error processing property 'Credential' of type <some resource
name>: Converting and storing an encrypted password as plaintext is allowed only if
PSDscAllowPlainTextPassword is set to true.
原因
當您在設定中使用認證,但未針對每個節點組態正確 ConfigurationData
設定 PSDscAllowPlainTextPassword
為 true 時,就會發生此問題。
解決方法
請務必針對每個節點組態傳入適當的 ConfigurationData
、設定 PSDscAllowPlainTextPassword
為 true。 請參閱在 Azure 自動化狀態設定中編譯 DSC 設定。
案例:從 DSC 擴充功能啟用電腦時發生「處理擴充功能失敗」錯誤
問題
使用 DSC 擴充功能啟用電腦時失敗,傳回下列錯誤:
VM has reported a failure when processing extension 'Microsoft.Powershell.DSC'. Error message: \"DSC
COnfiguration 'RegistrationMetaConfigV2' completed with error(s). Following are the first few:
Registration of the Dsc Agent with the server <url> failed. The underlying error is: The attempt to
register Dsc Agent with Agent Id <ID> with the server <url> return unexpected response code
BadRequest. .\".
原因
此錯誤通常起因於指派不存在於服務中的節點設定名稱給節點。
解決方法
請確定與服務中名稱完全相符的節點名稱,或不包含節點組態名稱。 這會啟用節點,但不會指派節點組態。
案例:使用 PowerShell 註冊節點時出現「發生一或多個錯誤」錯誤
問題
當您使用 Register-AzAutomationDSCNode 或 Register-AzureRMAutomationDSCNode 註冊節點時,您收到下列錯誤:
One or more errors occurred.
原因
當您嘗試在訂用帳戶中註冊節點,與自動化帳戶所使用的節點不同時,就會發生此錯誤。
解決方法
將跨訂用帳戶節點視為針對個別雲端或內部部署定義的節點。 使用下列其中一個選項來啟用機器,以註冊節點:
案例:「佈建失敗」錯誤訊息
問題
當您註冊節點時,您看到下列錯誤:
Provisioning has failed
原因
當節點與 Azure 之間的連線能力發生問題時,就會出現此訊息。
解決方法
判斷您的節點是否在虛擬私人網路 (VPN) 中,或是否有其他問題導致無法連線到 Azure。 請參閱針對功能部署問題進行疑難排解。
案例:在 Linux 中套用設定時失敗,發生一般錯誤
問題
在 Linux 中套用設定時失敗,傳回下列錯誤:
This event indicates that failure happens when LCM is processing the configuration. ErrorId is 1.
ErrorDetail is The SendConfigurationApply function did not succeed.. ResourceId is [resource]name
and SourceInfo is ::nnn::n::resource. ErrorMessage is A general error occurred, not covered by a
more specific error code..
原因
如果 /tmp 位置設為 noexec
,則目前的 DSC 版本無法套用設定。
解決方法
從 /tmp 位置移除 noexec
選項。
案例:重疊的節點設定名稱可能導致錯誤的版本
問題
當您使用單一設定指令碼來產生多個節點設定,但某些節點設定名稱是其他名稱的子集時,編譯服務最後會指派錯誤的設定。 只有當您使用單一指令碼來產生設定,且每一節點都有設定資料時,而且只有當字串開頭發生名稱重疊時,才會發生此問題。 例如,在 Cmdlet 中使用單一設定指令碼,根據 以雜湊表傳遞的節點資料來產生設定,而節點資料包含名為 server 和 1server 的伺服器。
原因
這是編譯服務的已知問題。
解決方法
最佳解決方法是在本機或 CI/CD 管道中編譯,並將節點設定 MOF 檔案直接上傳至服務。 如果必須在服務中編譯,則次佳解決方法是分割編譯作業,以避免名稱重疊。
案例:DSC 設定上傳時發生閘道逾時錯誤
問題
當您上傳 DSC 設定時,您收到 GatewayTimeout
錯誤。
原因
需要較長時間來編譯的 DSC 設定可能會造成此錯誤。
解決方法
您可以在任何 Import-DSCResource 呼叫中明確包含 ModuleName
參數,以加速剖析 DSC 設定。
案例:上線機器時發生錯誤
問題
當您將機器上線時,收到 agent has a problem
錯誤。
原因
這是已知的問題。 您無法再次指派與節點維持擱置狀態相同的設定。
解決方法
若要解決此問題,請套用不同的測試組態,然後再試一次原始組態。
下一步
如果您沒有在這裡看到您的問題,或無法解決問題,請嘗試下列其中一個支援通道:
- 透過 Azure 論壇獲得由 Azure 專家所提供的解答。
- 連線至 @AzureSupport,這是用來改善客戶體驗的官方 Microsoft Azure 帳戶。 Azure 支援會將 Azure 社群連線到解答、支援及專家。
- 提出 Azure 支援事件。 前往 Azure 支援網站,然後選取 [取得支援]。