Share via


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.