You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure环境下Hybrid Worker扩展安装失败及状态异常求助

Azure Hybrid Worker扩展安装故障排查

问题概述

我有一套PowerShell脚本,用于创建VM并安装Hybrid Worker及其扩展,但安装扩展时偶尔报错。即使脚本运行成功,也会出现**VM上显示扩展已安装,但自动化账户中Hybrid Worker显示“扩展未配置”**的异常情况。

脚本代码

$maxRetryCount = 3
$retryCount = 0
$retryIntervalSeconds = 120
do {
    $testvm = Get-AzVM -ResourceGroupName $resourcegroupname -Status | Where-Object { $_.Name -like "winvm1" }
    if ($testvm.PowerState -ne "VM running") {
        $retryCount ++
        Write-Output "INFORMATION:: Waiting for Man VM to be operational. Retries : $($retryCount) of $($maxRetryCount)"
        Start-Sleep -Seconds $retryIntervalSeconds
    } else {
        Write-Output "INFORMATION:: winvm1 is in running state."
        break
    }
} while ($retryCount -lt $maxRetryCount)

if ($testvm.PowerState -ne "VM running") {
    Write-Error "VM not running."
}

$HW1 = Get-AzAutomationHybridRunbookWorkerGroup -ResourceGroupName $resourcegroupname -AutomationAccountName $aaname -Name "hwrwinvm1"
$getHW1 = Get-AzAutomationHybridRunbookWorker -ResourceGroupName  $resourcegroupname -AutomationAccountName $aaname -HybridRunbookWorkerGroupName $HW1.Name | Where-Object { $_.VmResourceId -like $testvm.id}
if(!$getHW1){
    [guid]$worker1 = [guid]::NewGuid()

    Write-Output "ATTEMPTING:: Hybrid Worker Creation for  $($testvm.Name)"
    try {
        $hybridWorkerConfiguration = @{
            ResourceGroupName               = $resourcegroupname
            AutomationAccountName           = $aaname
            VmResourceId                    = $testvm.Id
            HybridRunbookWorkerGroupName    = $HW1.Name
            Name                            = $worker1
        }
        # Attempt to create a new Hybrid Worker
        $null = New-AzAutomationHybridRunbookWorker @hybridWorkerConfiguration
    } catch {
        Write-Error "An error occurred: $($_.Exception.Message)"
    }
}

if(!$getHW1.Ip){
    #create AutomationURI
    $token = Get-AzBearerToken
    $automationurl1 = "https://management.usgovcloudapi.net/subscriptions/${subscriptionId}/resourceGroups/${resourcegroupname}/providers/Microsoft.Automation/automationAccounts/${aaName}?api-version=2021-06-22"
    $settingsMan = @{
        AutomationAccountURL = (Invoke-RestMethod -Uri $automationurl1 -Headers @{ "Authorization" = $token } -Method Get).properties.AutomationHybridServiceUrl
    }

    try {
        $installextension = @{
            ResourceGroupName           = $testvm.ResourceGroupName
            Location                    = $testvm.Location
            VMName                      = $testvm.Name
            Name                        = "HybridWorkerExtension"
            Publisher                   = "Microsoft.Azure.Automation.HybridWorker"
            ExtensionType               = "HybridWorkerForWindows"
            TypeHandlerVersion          = "1.1"
            Settings                    = $settingsMan
            EnableAutomaticUpgrade      = $true
        }
    
        # Attempt to set the VM extension
        Set-AzVMExtension @installextension
    } catch {
        Write-Error "An error occurred: $($_.Exception.Message)"
    }
}else{
    Write-Warning "Extension installed"
}

错误信息

. '/home/vsts/work/1/s/SCRIPTS/PIPELINE/failover.ps1' -subscriptionId …
     |  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | An error occurred while setting the VM extension: Long running operation
     | failed with status 'Failed'. Additional Info:'VM has reported a failure
     | when processing extension 'HybridWorkerExtension' (publisher
     | 'Microsoft.Azure.Automation.HybridWorker' and type
     | 'HybridWorkerForWindows'). Error message: "[Internal Error] The Hybrid
     | Worker Extension failed to execute:
     | System.Net.Http.HttpRequestException: An error occurred while sending
     | the request. ---> System.Net.WebException: The remote name could not be
     | resolved:
     | 'XXXX.jrds.usge.azure-automation.us'   
     | at System.Net.HttpWebRequest.EndGetRequestStream(IAsyncResult
     | asyncResult, TransportContext& context)    at
     | System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult
     | ar)    --- End of inner exception stack trace ---    at
     | System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()    at

异常现象截图

Azure自动化账户中Hybrid Worker显示“扩展未配置”

故障分析与解决建议

1. DNS解析错误(核心报错原因)

报错提示远程名称无法解析: 'XXXX.jrds.usge.azure-automation.us',说明VM无法解析Azure政府云的自动化服务域名:

  • 检查VM的DNS服务器设置:确保使用Azure默认DNS(或能解析政府云域名的DNS服务器),避免使用无法访问Azure政府云的自定义DNS。
  • 验证VM网络连通性:在VM内执行nslookup XXXX.jrds.usge.azure-automation.us,确认能正常解析出IP。若无法解析,需调整DNS配置或检查网络防火墙/NSG是否拦截了DNS请求。

2. 脚本逻辑缺陷(导致“扩展已安装但未配置”)

脚本中判断条件!$getHW1.Ip存在逻辑漏洞:

  • 创建Hybrid Worker后,$getHW1变量不会自动刷新,导致后续判断仍使用旧值,跳过扩展安装逻辑。
  • 修复方案:在创建Hybrid Worker后,重新获取$getHW1的最新状态:
if(!$getHW1){
    [guid]$worker1 = [guid]::NewGuid()

    Write-Output "ATTEMPTING:: Hybrid Worker Creation for  $($testvm.Name)"
    try {
        $hybridWorkerConfiguration = @{
            ResourceGroupName               = $resourcegroupname
            AutomationAccountName           = $aaname
            VmResourceId                    = $testvm.Id
            HybridRunbookWorkerGroupName    = $HW1.Name
            Name                            = $worker1
        }
        # Attempt to create a new Hybrid Worker
        $null = New-AzAutomationHybridRunbookWorker @hybridWorkerConfiguration
        # 新增:重新获取Hybrid Worker的最新状态
        $getHW1 = Get-AzAutomationHybridRunbookWorker -ResourceGroupName  $resourcegroupname -AutomationAccountName $aaname -HybridRunbookWorkerGroupName $HW1.Name | Where-Object { $_.VmResourceId -like $testvm.id}
    } catch {
        Write-Error "An error occurred: $($_.Exception.Message)"
    }
}

3. 扩展安装时机问题

VM刚启动完成可能仍处于初始化状态,直接安装扩展会导致失败:

  • 延长VM启动后的等待时间,或增加扩展安装的重试逻辑,确保VM完全就绪后再执行扩展安装。

4. 扩展版本兼容性

脚本中指定TypeHandlerVersion = "1.1",建议使用最新兼容版本,或移除该参数让系统自动选择合适版本,避免版本不兼容导致的异常。

内容的提问来源于stack exchange,提问作者Ayanda ezekiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 07:15:13