如何使用ARM Powershell为新创建的VM分配网络接口?

如何使用ARM Powershell为新创建的VM分配网络接口?,powershell,azure,azureportal,Powershell,Azure,Azureportal,我开始在Azure租赁中使用ARM 首先,我创建了一个资源组,TEST-RG 我已经使用门户在我的资源组中创建了一个网络接口。让我们在资源组TEST-RG中将其称为TEST-NIC 我还创建了一个名为TEST-VM的DS2_V2虚拟机,运行Windows 2012 R2,也运行在TEST-RG中 如何将TEST-NIC与TEST-VM关联?我在门户中看不到这样做的方法,在门户中也看不到创建没有网络接口的虚拟机的方法,因此我可以稍后添加TEST-NIC 所以,我假设这只能在PS中完成,但我一点也不

我开始在Azure租赁中使用ARM

首先,我创建了一个资源组,
TEST-RG

我已经使用门户在我的资源组中创建了一个网络接口。让我们在资源组
TEST-RG
中将其称为
TEST-NIC

我还创建了一个名为
TEST-VM
DS2_V2
虚拟机,运行Windows 2012 R2,也运行在
TEST-RG

如何将
TEST-NIC
TEST-VM
关联?我在门户中看不到这样做的方法,在门户中也看不到创建没有网络接口的虚拟机的方法,因此我可以稍后添加
TEST-NIC

所以,我假设这只能在PS中完成,但我一点也不清楚如何

我把情节弄丢了吗?任何指导都将不胜感激


谢谢

首先,如果没有NIC,您无法部署ARM虚拟机

若你们看剧本

它有台词

$Interface = New-AzureRmNetworkInterface -Name $InterfaceName `
            -ResourceGroupName $ResourceGroupName `
            -Location $Location `
            -SubnetId $VNet.Subnets[0].Id `
            -PublicIpAddressId $PIp.Id
这是后来由

$VirtualMachine = Add-AzureRmVMNetworkInterface `
            -VM $VirtualMachine `
            -Id $Interface.Id
因此,如果要使用现有NIC,只需传递$interface.id(从Get-AzureRmVMNetworkInterface)


当您将这两个脚本打包到虚拟机部署脚本的其余部分时,您将使用NIC构建虚拟机。目前,Azure不支持将NIC添加到现有虚拟机

我可以在门户中看到一种创建没有网络的VM的方法吗 接口,以便我以后可以添加TEST-NIC

我们不能在没有NIC的情况下创建VM,但我们可以使用PowerShell使用此NIC创建新VM

下面是我的脚本,用于使用现有NIC创建新的VM

$ResourceGroupName = "nic"
$Location = "Eastus"
$StorageName = "jasondisk321"
$StorageType = "Standard_LRS"
$VMName = "myvm"
$VMSize = "Standard_DS2_v2"
$OSDiskName = $VMName + "OSDisk"
$StorageAccount = New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageName -Type $StorageType -Location $Location
$nic = Get-AzureRmNetworkInterface -Name jasonnic -ResourceGroupName $rgname
$nicId = $nic.Id 
$Credential = Get-Credential
$vm = New-AzureRmVMConfig -VMName $VMName -VMSize $VMSize
$vm = Set-AzureRmVMOperatingSystem -VM $vm -ComputerName $VMName -Windows -Credential $Credential
$vm = Set-AzureRmVMSourceImage -VM $vm -PublisherName "MicrosoftWindowsServer" -Offer "WindowsServer" -Skus "2012-R2-Datacenter" -Version "latest"
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id
$OSDiskUri = $StorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $OSDiskName + ".vhd"
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $OSDiskName -VhdUri $OSDiskUri -CreateOption FromImage
New-AzureRmVM -ResourceGroupName $ResourceGroupName -Location $Location -VM $vm

我一直很小心,这是一个连续的租约。我试着在门户网站上四处寻找,但没有结果,而且cmdlet非常多且复杂。。。基本上,我不想破坏任何东西——我需要知道我是否错过了门户中的一个技巧,或者cmdlet是否是实现这一点的唯一方法,如果是,从哪里开始。这是一个巨大的区域。那么你的最终目标是什么?如果你已经创建了一个虚拟机,它已经有一个网卡了。我还以为是在OP里呢?我希望将网络接口TEST-NIC保持独立,并将其与VM关联,其中TEST-NIC是该VM的唯一网络接口-我也不知道如何在没有网络接口的情况下创建VM(或使用预先创建的TEST-NIC接口创建VM)。您只能使用powershell\cli\sdk实现这一点,不是portalThat这是我在OP中所说的-我迷恋的是我需要的PS cmdlet…谢谢-非常感谢-非常接近我想要的-如果我在DS2_V2服务器上寻找Windows 2012 R2映像,会有实质性的区别吗?@Nicko我已经更新了关于Windows映像的答案,请检查一下,我们可以在这一页找到。谢谢-我使用它作为基础,以及从Azure门户为现有类似VM导出的脚本,以使我自己到达那里。。。