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

使用PowerShell创建Azure VMSS时指定OS Disk名称报错如何解决

报错原因

你遇到的Parameter 'osDisk.name' is not allowed报错是Azure VMSS的平台原生限制:Azure虚拟机规模集的OS磁盘名称默认由平台自动生成,不支持直接通过Set-AzVmssStorageProfile的-OsDiskName参数指定固定OS磁盘名称,因为VMSS会动态扩缩实例,每个实例的OS磁盘需要唯一标识,固定名称会导致冲突。


解决方法

如果要自定义OS磁盘的命名规则,避免随机后缀,需要通过配置VMSS的OS磁盘命名策略实现,步骤如下:

  1. 首先去掉Set-AzVmssStorageProfile命令里的-OsDiskName $OSDiskName参数,这是导致报错的直接原因
  2. 新增OS磁盘自定义命名规则配置,规则支持两个占位符保证名称全局唯一:
    • {VMSSName}:自动替换为你设置的VMSS名称
    • {VMInstanceId}:自动替换为VMSS实例的唯一ID,必须保留该占位符避免磁盘名称冲突

调整后的完整可运行命令示例:

# 先创建基础VMSS配置,需确保编排模式为Flexible,仅灵活编排模式支持自定义磁盘命名
$vmssConfig = New-AzVmssConfig -Location $location -SkuCapacity 2 -SkuName "Standard_D2s_v3" -OrchestrationMode Flexible

# 配置存储配置,删除原-OsDiskName参数
Set-AzVmssStorageProfile $vmssConfig `
              -OsDiskCreateOption "FromImage" `
              -ImageReferenceId $galleryImage.Id `
              -OsDiskCaching ReadWrite `
              -OsDiskSizeGB 128

# 新增:自定义OS磁盘命名规则,可按需修改CustomNamingPattern的前缀部分
$vmssConfig.VirtualMachineProfile.StorageProfile.OsDisk.NamingPolicy = @{
    "NamingConvention" = "Custom"
    "CustomNamingPattern" = "你自定义的前缀-{VMInstanceId}"
}

# 剩余原有配置不变
Set-AzVmssOsProfile $vmssConfig `
              -AdminUsername $username `
              -AdminPassword $Password `
              -ComputerNamePrefix "UKSSPAG"
            
Add-AzVmssNetworkInterfaceConfiguration -VirtualMachineScaleSet $vmssConfig -Name "NICConfig" -Primary $true -IPConfiguration $ipConfig 
            
New-AzVmss -ResourceGroupName $resourceGroup -VMScaleSetName $scaleSetName -VirtualMachineScaleSet $vmssConfig

注意事项
  • 自定义命名规则总长度不能超过80个字符,同时要符合Azure磁盘的命名规范:只能包含小写字母、数字、连字符,不能以连字符开头或结尾
  • {VMInstanceId}是必填占位符,删除会导致实例创建时磁盘名称冲突
  • 该功能仅支持编排模式为Flexible(灵活编排)的VMSS,经典统一编排模式不支持自定义OS磁盘名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:18:03