quickstarts/microsoft.compute/1-vm-loadbalancer-2-nics/multi-nic-vm-iaasv2.ps1 (61 lines of code) (raw):

# PowerShell script to create the same two-NIC VM as the assoicated json template. # Author, Colin Cole, Microsoft Switch-AzureMode AzureResourceManager # Variables $rgname = 'samplerg' $vnetName = $rgname + 'vnet' $vnetAddressPrefix = '10.0.0.0/16' $subnetName = $rgname + 'subnet' $subnetAddressPrefix = '10.0.1.0/24' $publicIpName = $rgname + 'pubip' $lbName = $rgname + 'lb' $frontendName = $rgname + 'frontend' $backendAddressPoolName = $rgname + 'backend' $inboundNatRuleName1 = $rgname + 'nat1' $nicname1 = $rgname + 'nic1' $nicname2 = $rgname + 'nic2' $resourceTypeParent = "Microsoft.Network/loadBalancers" $location = 'westus' $vmsize = 'Standard_D2'; # must be A2 or D2 or above for two nics $vmname = $rgname + 'vm'; $stoname = $rgname.ToLower() + 'sto'; $stotype = 'Standard_LRS'; $osDiskName = 'osDisk'; $osDiskVhdUri = "https://$stoname.blob.core.windows.net/vhds/os.vhd"; $user = "ops"; $password = 'pass@word2'; # Create the resource group New-AzureResourceGroup -Name $rgname -Location $location # Create the Virtual Network $subnet = New-AzureVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix $subnetAddressPrefix $vnet = New-AzurevirtualNetwork -Name $vnetName -ResourceGroupName $rgname -Location $location -AddressPrefix $vnetAddressPrefix -Subnet $subnet # Create the publicip $publicip = New-AzurePublicIpAddress -ResourceGroupName $rgname -name $publicIpName -location $location -AllocationMethod Dynamic # Create LoadBalancer and open up a NAT rule $frontend = New-AzureLoadBalancerFrontendIpConfig -Name $frontendName -PublicIpAddress $publicip $backendAddressPool = New-AzureLoadBalancerBackendAddressPoolConfig -Name $backendAddressPoolName $inboundNatRule1 = New-AzureLoadBalancerInboundNatRuleConfig -Name $inboundNatRuleName1 -FrontendIPConfiguration $frontend -Protocol Tcp -FrontendPort 50001 -BackendPort 3389 -IdleTimeoutInMinutes 15 $lb = New-AzureLoadBalancer -Name $lbName -ResourceGroupName $rgname -Location $location -FrontendIpConfiguration $frontend -BackendAddressPool $backendAddressPool -InboundNatRule $inboundNatRule1 # Create 2 network interfaces and accociate to loadbalancer to nic1 $nic1 = New-AzureNetworkInterface -Name $nicname1 -ResourceGroupName $rgname -Location $location -Subnet $vnet.Subnets[0] -LoadBalancerBackendAddressPool $lb.BackendAddressPools[0] -LoadBalancerInboundNatRule $lb.InboundNatRules[0] $nic2 = New-AzureNetworkInterface -Name $nicname2 -ResourceGroupName $rgname -Location $location -SubnetId $vnet.Subnets[0].Id # Associate the nic to the load balancer $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools[0]); $nic1.IpConfigurations[0].LoadBalancerInboundNatRules.Add($lb.InboundNatRules[0]); # Configure VM and attach networking interfaces $vm = New-AzureVMConfig -VMName $vmname -VMSize $vmsize; $vm = Add-AzureVMNetworkInterface -VM $vm -Id $nic1.Id -Primary; $vm = Add-AzureVMNetworkInterface -VM $vm -Id $nic2.Id; # Setup storage account New-AzureStorageAccount -ResourceGroupName $rgname -Name $stoname -Location $location -Type $stotype; $stoaccount = Get-AzureStorageAccount -ResourceGroupName $rgname -Name $stoname; # Add OS Disk $vm = Set-AzureVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskVhdUri -Caching 'ReadWrite' -CreateOption fromImage; # Setup OS $securePassword = ConvertTo-SecureString $password -AsPlainText -Force; $cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword); $vm = Set-AzureVMOperatingSystem -VM $vm -Windows -ComputerName $vmname -Credential $cred; # Setup Image $vm = Set-AzureVMSourceImage -VM $vm -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2012-R2-Datacenter -Version "latest" # Create Virtual Machine New-AzureVM -ResourceGroupName $rgname -Location $location -Name $vmname -VM $vm;