Voorbeeld van een script voor het uploaden van een VHD naar Azure om een nieuwe VM te maken
Met dit script wordt een lokaal VHD-bestand van een gegeneraliseerde VM geüpload naar Azure en wordt hiervan een installatiekopie van Managed Disks gemaakt om een nieuwe VM in te richten.
Voor dit voorbeeld is Azure PowerShell Az 1.0 of hoger vereist. Voer Get-Module -ListAvailable Az
uit om te zien welke versies zijn geïnstalleerd.
Als u PowerShell moet installeren, raadpleegt u De Azure PowerShell-module installeren.
Voer Connect-AzAccount uit om u aan te melden bij Azure.
Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
Voorbeeldscript
# Provide values for the variables
$resourceGroup = 'myResourceGroup'
$location = 'EastUS'
$storageaccount = 'mystorageaccount'
$storageType = 'Standard_LRS'
$containername = 'mycontainer'
$localPath = 'C:\Users\Public\Documents\Hyper-V\VHDs\generalized.vhd'
$vmName = 'myVM'
$imageName = 'myImage'
$vhdName = 'myUploadedVhd.vhd'
$diskSizeGB = '128'
$subnetName = 'mySubnet'
$vnetName = 'myVnet'
$ipName = 'myPip'
$nicName = 'myNic'
$nsgName = 'myNsg'
$ruleName = 'myRdpRule'
$computerName = 'myComputerName'
$vmSize = 'Standard_DS1_v2'
# Get the username and password to be used for the administrators account on the VM.
# This is used when connecting to the VM using RDP.
$cred = Get-Credential
# Upload the VHD
New-AzResourceGroup -Name $resourceGroup -Location $location
New-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount -Location $location `
-SkuName $storageType -Kind "Storage"
$urlOfUploadedImageVhd = ('https://' + $storageaccount + '.blob.core.windows.net/' + $containername + '/' + $vhdName)
Add-AzVhd -ResourceGroupName $resourceGroup -Destination $urlOfUploadedImageVhd `
-LocalFilePath $localPath
# Note: Uploading the VHD may take awhile!
# Create a managed image from the uploaded VHD
$imageConfig = New-AzImageConfig -Location $location
$imageConfig = Set-AzImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized `
-BlobUri $urlOfUploadedImageVhd
$image = New-AzImage -ImageName $imageName -ResourceGroupName $resourceGroup -Image $imageConfig
# Create the networking resources
$singleSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
$vnet = New-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroup -Location $location `
-AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
$pip = New-AzPublicIpAddress -Name $ipName -ResourceGroupName $resourceGroup -Location $location `
-AllocationMethod Dynamic
$rdpRule = New-AzNetworkSecurityRuleConfig -Name $ruleName -Description 'Allow RDP' -Access Allow `
-Protocol Tcp -Direction Inbound -Priority 110 -SourceAddressPrefix Internet -SourcePortRange * `
-DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
-Name $nsgName -SecurityRules $rdpRule
$nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName $resourceGroup -Location $location `
-SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id
$vnet = Get-AzVirtualNetwork -ResourceGroupName $resourceGroup -Name $vnetName
# Start building the VM configuration
$vm = New-AzVMConfig -VMName $vmName -VMSize $vmSize
# Set the VM image as source image for the new VM
$vm = Set-AzVMSourceImage -VM $vm -Id $image.Id
# Finish the VM configuration and add the NIC.
$vm = Set-AzVMOSDisk -VM $vm -DiskSizeInGB $diskSizeGB -CreateOption FromImage -Caching ReadWrite
$vm = Set-AzVMOperatingSystem -VM $vm -Windows -ComputerName $computerName -Credential $cred `
-ProvisionVMAgent -EnableAutoUpdate
$vm = Add-AzVMNetworkInterface -VM $vm -Id $nic.Id
# Create the VM
New-AzVM -VM $vm -ResourceGroupName $resourceGroup -Location $location
# Verify that the VM was created
$vmList = Get-AzVM -ResourceGroupName $resourceGroup
$vmList.Name
Opschonen van implementatie
Gebruik de volgende opdracht om de resourcegroep, VM, en alle gerelateerde resources te verwijderen.
Remove-AzResourceGroup -Name $resourceGroup
Uitleg van het script
In dit script worden de volgende opdrachten gebruikt om de implementatie te maken. Elk item in de tabel is een koppeling naar specifieke documentatie over de opdracht.
Opdracht | Opmerkingen |
---|---|
New-AzResourceGroup | Hiermee maakt u een resourcegroep waarin alle resources worden opgeslagen. |
New-AzStorageAccount | Hiermee maakt u een opslagaccount. |
Add-AzVhd | Hiermee wordt een virtuele harde schijf geüpload van een on-premises virtuele machine naar een blob in een cloudopslagaccount in Azure. |
New-AzImageConfig | Hiermee maakt u een configureerbaar installatiekopie-object. |
Set-AzImageOsDisk | Hiermee stelt u de schijfeigenschappen van het besturingssysteem in voor een installatiekopie-object. |
New-AzImage | Hiermee maakt u een nieuwe installatiekopie. |
New-AzVirtualNetworkSubnetConfig | Hiermee maakt u een subnetconfiguratie. Deze configuratie wordt gebruikt bij het maken van het virtueel netwerk. |
New-AzVirtualNetwork | Hiermee maakt u een virtueel netwerk. |
New-AzPublicIpAddress | Hiermee maakt u een openbaar IP-adres. |
New-AzNetworkInterface | Hiermee maakt u een netwerkinterface. |
New-AzNetworkSecurityRuleConfig | Hiermee maakt u een regelconfiguratie voor de netwerkbeveiligingsgroep. Deze configuratie wordt gebruikt voor het maken van een NSG-regel wanneer de NSG wordt gemaakt. |
New-AzNetworkSecurityGroup | Hiermee maakt u een netwerkbeveiligingsgroep. |
Get-AzVirtualNetwork | Hiermee haalt u een virtueel netwerk op in een resourcegroep. |
New-AzVMConfig | Hiermee maakt u een VM-configuratie. Deze configuratie bevat informatie zoals de naam, het besturingssysteem en de beheerdersreferenties van de virtuele machine. De configuratie wordt gebruikt tijdens het maken van de virtuele machine. |
Set-AzVMSourceImage | Hiermee geeft u een installatiekopie voor een virtuele machine op. |
Set-AzVMOSDisk | Hiermee stelt u de schijfeigenschappen van het besturingssysteem in voor een virtuele machine. |
Set-AzVMOperatingSystem | Hiermee stelt u de schijfeigenschappen van het besturingssysteem in voor een virtuele machine. |
Add-AzVMNetworkInterface | Hiermee voegt u een netwerkinterface aan een virtuele machine toe. |
New-AzVM | Hiermee maakt u een virtuele machine. |
Remove-AzResourceGroup | Hiermee verwijdert u een resourcegroep en alle daarin opgenomen resources. |
Volgende stappen
Zie voor meer informatie over de Azure PowerShell-module de documentatie van Azure PowerShell.
U kunt extra PowerShell-scriptvoorbeelden voor virtuele machines vinden in de Azure-documentatie voor Windows-VM's.