我正在使用Powershell从映像在Azure上创建VM。
这是我正在使用的脚本。
$UserName = "username"
$Password = ConvertTo-SecureString "password@123" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)
New-AzureRmVm `
-ResourceGroupName "RSG" `
-Name "VMName" `
-ImageName "ImageName" `
-Location "West US" `
-VirtualNetworkName "VNName" `
-SubnetName "default" `
-Credential $psCred
-PublicIpAddressName "None" `
-OpenPorts 3389
但是,当我进入Azure门户并看到时,默认情况下会分配一些Public Ip。我也尝试过不给PublicIpAddressName
假设属性,它不会分配任何IP,但仍在分配。
我希望公共IP不存在,任何人都可以帮助我实现这一目标。谢谢!
答案 0 :(得分:0)
当前,此问题在官方azure-powershell
github上仍处于 Open 状态。您可以引用它here。如果您仍然希望绕过此操作,则可以尝试使用New-AzureReservedIP
或在部署命令后尝试自行删除公共IP Remove-AzureRmPublicIpAddress
。
注意:我尚未对其进行测试。只是一个主意。
引用:Docs
答案 1 :(得分:0)
要设置没有公共IP地址,只需将其定义为“”,在powershell中,您将需要再次引用该地址,以使其成为“””。
答案 2 :(得分:0)
如果使用的是PowerShell,则需要通过将“”更改为“”“”来将所有空参数正确地传递到命令中来转义所有空参数。否则,PowerShell将不会传递空字符串,并且您将从命令中收到一条错误消息,表明它缺少参数。
答案 3 :(得分:-1)
$winVmCred = Get-Credential `
-Message "Enter username and password for the Windows management virtual machine."
# Create a NIC for the VM.
$winVmNic = New-AzNetworkInterface -Name "winVMNIC01" `
-ResourceGroupName $resourceGroup.ResourceGroupName `
-Location $location `
-SubnetId $targetVMSubnet.Id `
-PrivateIpAddress "10.10.12.10"
# Configure the Windows management VM.
$winVmConfig = New-AzVMConfig -VMName $winVmName -VMSize $winVmSize | `
Set-AzVMOperatingSystem -Windows -ComputerName $winVmName -Credential $winVmCred | `
Set-AzVMSourceImage -PublisherName $winVmPublisher `
-Offer $winVmOffer `
-Skus $winVmSku `
-Version $winVmVersion | `
Add-AzVMNetworkInterface -Id $winVmNic.Id
# Create the VM.
$winVM = New-AzVM -ResourceGroupName $resourceGroup.ResourceGroupName `
-Location $location `
-VM $winVmConfig `
-ErrorAction Stop