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

如何使用New-AzVm创建不带NSG的Azure虚拟机?参数设置遇阻

解决New-AzVm无法跳过NSG创建的问题

当使用New-AzVm的简化参数集(指定VirtualNetworkName和SubnetName)时,即使将SecurityGroupName设为$null,cmdlet仍会自动创建默认NSG并关联到NIC——这是该参数的设计逻辑:未指定有效NSG名称时,就触发自动创建行为,而非跳过NSG关联。

要创建不带NSG的虚拟机,需要手动创建无NSG关联的NIC,再让VM使用这个现成的NIC,具体步骤如下:

  1. 保留原有的变量定义(如凭据、资源组等)
  2. 获取目标虚拟网络和子网的对象,用于NIC创建
  3. 创建不关联任何NSG的NIC
  4. 调用New-AzVm时,通过-NetworkInterface参数指定这个预创建的NIC,同时移除VirtualNetworkName、SubnetName、SecurityGroupName这些自动创建NIC的参数

修改后的完整代码示例:

$Date = Get-Date -Format "MMddyymm"
$user = "Sitecore"
$password = ConvertTo-SecureString "Qwerty123456" -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $password
$RGroup = 'test'
$Location = "Westus3"
$VMName = "vmtest$date"
$image = "vmtest-image-20220805165444"
$vnet = "vnet1"
$SizeVM = "Standard_b4ms"
$NICName = "$VMName$date"
$Subnet = "default"
$tags = @{'xxx' = 'yyy'}

# 获取虚拟网络和子网对象
$vnetObj = Get-AzVirtualNetwork -ResourceGroupName $RGroup -Name $vnet
$subnetObj = $vnetObj.Subnets | Where-Object Name -eq $Subnet

# 创建无NSG关联的NIC
$nic = New-AzNetworkInterface -Name $NICName `
    -ResourceGroupName $RGroup `
    -Location $Location `
    -SubnetId $subnetObj.Id `
    -Tag $tags

# 创建VM并使用预创建的NIC
New-AzVM -ResourceGroupName $RGroup `
    -Name $VMName `
    -Image $image `
    -Location $Location `
    -NetworkInterface $nic `
    -PublicIpAddressName $null `
    -Credential $credential `
    -Size $SizeVM

关键说明:

  • 手动创建NIC时,不指定-NetworkSecurityGroupName参数,即可让NIC处于无NSG关联状态
  • 使用-NetworkInterface参数后,New-AzVm会跳过自动创建NIC的流程,直接使用你提供的NIC,自然也不会生成默认NSG

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:45:46