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

Azure VM启用EncryptionAtHost报错:属性不存在问题求助

问题:批量启用Azure虚拟机Encryption at Host功能失败,部分VM报属性不存在错误

背景与脚本逻辑

尝试通过PowerShell脚本批量为Azure租户内的虚拟机启用Encryption at Host功能,初始脚本逻辑为:获取所有VM、检查加密状态、停止VM、更新属性、重启原本运行的VM。但有大约30台VM修复失败,同订阅内部分同OS、同规格的VM可正常启用该功能。修改后的强制更新脚本如下:

$subscriptionID = "mysubid"
Set-AzContext $subscriptionID

# List remaining non-compliant VMs
$subVMs = ("list of vm names")

foreach ($name in $subVMs) {
    $vm = Get-AZVM -Name $name
    $thisVm = Get-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Status
    $powerState = $thisVm.Statuses.DisplayStatus

    Stop-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Force

    $vm.Name
    $vm.SecurityProfile.EncryptionAtHost = $true
    Update-AzVM -ResourceGroupName $vm.ResourceGroupName -vm $vm

    if ($powerState -eq "VM running") {
        Start-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name
    }
}

报错信息

执行上述脚本时,未修复成功的VM均抛出以下错误:

在此对象上找不到属性'EncryptionAtHost'。请验证该属性是否存在并可设置。

已确认的前置条件

  • 已通过以下命令确认订阅级已注册EncryptionAtHost功能,且订阅已启用该功能:
Get-AzProviderFeature -FeatureName "EncryptionAtHost" -ProviderNamespace "Microsoft.Compute"
  • 排除VM规格影响:存在同操作系统、同VM规格的实例,一台可成功启用加密,另一台报错。

排查结果

运行以下排查脚本验证VM的属性状态:

foreach ($name in $subVMs) {
    $vm = Get-AZVM -Name $name

    $vm.Name
        
    if ($vm.SecurityProfile.EncryptionAtHost -eq $true) {
        Write-Output "Already Encrypted"
    }

    if ($vm.SecurityProfile.EncryptionAtHost -eq $false){
        Write-Output "Not Encrypted"
    }

    Write-Output ""
}

输出示例:

VM1
Not Encrypted

VM2
Already Encrypted

VM3

VM4
Already Encrypted

其中无后续状态输出的VM(如VM3)即为报属性不存在的VM,此类VM的SecurityProfile对象中未包含EncryptionAtHost属性。

需求

寻求无需手动修改的批量修复方案,解决此类VM无法通过脚本启用Encryption at Host的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:12:33