共用方式為


針對 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 組態。 如需詳細資訊,請參閱私人網路的設定

  • 當您停用 Azure 自動化中的本機驗證時。 請參閱停用本機驗證。 若要修正此問題,請參閱 重新啟用本機驗證

  • 用戶端電腦時間與實際時間有好幾分鐘的差距。 使用下列命令來檢查時間: w32tm /stripchart /computer:time.windows.com /samples:6

解決方法

使用下列步驟來重新註冊失敗的 DSC 節點。

步驟 1:取消註冊節點

  1. 在 Azure 入口網站中,移至 [首頁]>[自動化帳戶]> (您的自動化帳戶) > [狀態設定 (DSC)]
  2. 選取 [節點],然後選取有問題的節點。
  3. 選取 [取消註冊] 以取消註冊節點。

步驟 2:從節點解除安裝 DSC 擴充功能

  1. 在 Azure 入口網站中,移至 [首頁]> [虛擬機器]> (失敗節點) > [擴充功能]
  2. 選取 PowerShell DSC 擴充功能 [Microsoft.Powershell.DSC]
  3. 選取 [解除安裝] 以解除安裝擴充功能。

步驟 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:重新註冊失敗節點

  1. 在 Azure 入口網站中,移至 [首頁]>[自動化帳戶]> (您的自動化帳戶) > [狀態設定 (DSC)]
  2. 選取 [節點]
  3. 選取 [新增]。
  4. 選取失敗節點。
  5. 選取 [連線],然後選取您想要的選項。

案例:節點處於失敗狀態,並發生「找不到」錯誤

問題

節點在報告中出現「失敗」狀態,而且發生錯誤:

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-AzAutomationDSCNodeRegister-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 中使用單一設定指令碼,根據 以雜湊表傳遞的節點資料來產生設定,而節點資料包含名為 server1server 的伺服器。

原因

這是編譯服務的已知問題。

解決方法

最佳解決方法是在本機或 CI/CD 管道中編譯,並將節點設定 MOF 檔案直接上傳至服務。 如果必須在服務中編譯,則次佳解決方法是分割編譯作業,以避免名稱重疊。

案例:DSC 設定上傳時發生閘道逾時錯誤

問題

當您上傳 DSC 設定時,您收到 GatewayTimeout 錯誤。

原因

需要較長時間來編譯的 DSC 設定可能會造成此錯誤。

解決方法

您可以在任何 Import-DSCResource 呼叫中明確包含 ModuleName 參數,以加速剖析 DSC 設定。

案例:上線機器時發生錯誤

問題

當您將機器上線時,收到 agent has a problem 錯誤。

原因

這是已知的問題。 您無法再次指派與節點維持擱置狀態相同的設定。

解決方法

若要解決此問題,請套用不同的測試組態,然後再試一次原始組態。

下一步

如果您沒有在這裡看到您的問題,或無法解決問題,請嘗試下列其中一個支援通道:

  • 透過 Azure 論壇獲得由 Azure 專家所提供的解答。
  • 連線至 @AzureSupport,這是用來改善客戶體驗的官方 Microsoft Azure 帳戶。 Azure 支援會將 Azure 社群連線到解答、支援及專家。
  • 提出 Azure 支援事件。 前往 Azure 支援網站,然後選取 [取得支援]