Share via


Bir VHD’yi Azure’a yüklemek ve yeni bir sanal makine oluşturmak için örnek betik

Bu betik, genelleştirilmiş bir sanal makineden yerel bir .vhd dosyasını alıp Azure’a yükler, bir Yönetilen Disk görüntüsü oluşturur ve yeni sanal makine oluşturmak için bunu kullanır.

Bu örnek az 1.0 veya sonraki Azure PowerShell gerektirir. Hangi sürümlerin yüklü olduğunu görmek için komutunu çalıştırın Get-Module -ListAvailable Az . Yüklemeniz gerekiyorsa bkz. Azure PowerShell modülünü yükleme.

Azure'da oturum açmak için Connect-AzAccount komutunu çalıştırın.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Örnek betik

# 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


Dağıtımı temizleme

Kaynak grubunu, VM’yi ve ilgili tüm kaynakları kaldırmak için aşağıdaki komutu çalıştırın.

Remove-AzResourceGroup -Name $resourceGroup

Betik açıklaması

Bu betik, dağıtımı oluşturmak için aşağıdaki komutları kullanır. Tablodaki her öğe, komuta özgü belgelere yönlendirir.

Komut Notlar
New-AzResourceGroup Tüm kaynakların depolandığı bir kaynak grubu oluşturur.
New-AzStorageAccount Bir depolama hesabı oluşturur.
Add-AzVhd Şirket içi bir sanal makineden, Azure’da bulut depolama hesabındaki bir bloba sanal sabit disk yükler.
New-AzImageConfig Yapılandırılabilir bir görüntü nesnesi oluşturur.
Set-AzImageOsDisk Bir görüntü nesnesinde işletim sistemi disk özelliklerini ayarlar.
New-AzImage Yeni bir görüntü oluşturur.
New-AzVirtualNetworkSubnetConfig Bir alt ağ yapılandırması oluşturur. Bu yapılandırma, sanal ağ oluşturma işlemiyle birlikte kullanılır.
New-AzVirtualNetwork Sanal ağ oluşturur.
New-AzPublicIpAddress Genel bir IP adresi oluşturur.
New-AzNetworkInterface Ağ arabirimi oluşturur.
New-AzNetworkSecurityRuleConfig Ağ güvenlik grubu kuralı yapılandırması oluşturur. Bu yapılandırma, NSG oluşturulduğunda bir NSG kuralı oluşturmak için kullanılır.
New-AzNetworkSecurityGroup Bir ağ güvenlik grubu oluşturur.
Get-AzVirtualNetwork Bir kaynak grubundaki sanal ağı alır.
New-AzVMConfig Sanal makine yapılandırması oluşturur. Bu yapılandırma; sanal makine adı, işletim sistemi ve yönetici kimlik bilgileri gibi bilgileri içerir. Yapılandırma, sanal makine oluşturulurken kullanılır.
Set-AzVMSourceImage Sanal makine için bir görüntü belirtir.
Set-AzVMOSDisk Bir sanal makinedeki işletim sistemi disk özelliklerini ayarlar.
Set-AzVMOperatingSystem Bir sanal makinedeki işletim sistemi disk özelliklerini ayarlar.
Add-AzVMNetworkInterface Sanal makineye bir ağ arabirimi ekler.
New-AzVM Sanal makine oluşturur.
Remove-AzResourceGroup Kaynak grubunu ve grubun içerdiği tüm kaynakları kaldırır.

Sonraki adımlar

Azure PowerShell modülü hakkında daha fazla bilgi için bkz. Azure PowerShell belgeleri.

Ek sanal makine PowerShell betiği örnekleri, Azure Windows VM belgeleri içinde bulunabilir.