Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este script toma un archivo .vhd local de una máquina virtual generalizada y lo carga en Azure, crea una imagen de Managed Disk y usa para crear una nueva máquina virtual.
Este ejemplo requiere Azure PowerShell Az 1.0, o cualquier versión posterior. Ejecute Get-Module -ListAvailable Az para ver qué versiones están instaladas.
Si necesita instalarlo, consulte Instalación del módulo de Azure PowerShell.
Ejecute Connect AzAccount para iniciar sesión en Azure.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Script de ejemplo
# 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
Limpieza del despliegue
Ejecute el siguiente comando para quitar el grupo de recursos, la máquina virtual y todos los recursos relacionados.
Remove-AzResourceGroup -Name $resourceGroup
Explicación del script
Este script usa los siguientes comandos para crear la implementación. Cada elemento de la tabla incluye vínculos a la documentación específica del comando.
| Comando | Notas |
|---|---|
| New-AzResourceGroup | Crea un grupo de recursos en el que se almacenan todos los recursos. |
| New-AzStorageAccount | Crea una cuenta de almacenamiento. |
| Add-AzVhd | Carga un disco duro virtual desde una máquina virtual local a un blob en una cuenta de almacenamiento en la nube en Azure. |
| New-AzImageConfig | Crea un objeto de imagen configurable. |
| Set-AzImageOsDisk | Establece las propiedades del disco del sistema operativo en un objeto de imagen. |
| New-AzImage | Crea una nueva imagen. |
| New-AzVirtualNetworkSubnetConfig | Crea una configuración de subred. Esta configuración se usa con el proceso de creación de red virtual. |
| New-AzVirtualNetwork | Crea una red virtual. |
| New-AzPublicIpAddress | Crea una dirección IP pública. |
| New-AzNetworkInterface | Crea una interfaz de red. |
| New-AzNetworkSecurityRuleConfig | Crea la configuración de una regla en un grupo de seguridad de red. Esta configuración se usa para crear una regla de NSG cuando se crea el NSG. |
| New-AzNetworkSecurityGroup | Crea un grupo de seguridad de red. |
| Get-AzVirtualNetwork | Obtiene una red virtual en un grupo de recursos. |
| New-AzVMConfig | Crea una configuración de máquina virtual. Esta configuración incluye información como el nombre de la máquina virtual, el sistema operativo y las credenciales administrativas. La configuración se usa durante la creación de la máquina virtual. |
| Set-AzVMSourceImage | Especifica una imagen para una máquina virtual. |
| Set-AzVMOSDisk | Establece las propiedades del disco del sistema operativo en una máquina virtual. |
| Set-AzVMOperatingSystem | Establece las propiedades del disco del sistema operativo en una máquina virtual. |
| Add-AzVMNetworkInterface | Agrega una interfaz de red a una máquina virtual. |
| new-AzVM | Cree una máquina virtual. |
| Remove-AzResourceGroup | Quita un grupo de recursos y todos los recursos incluidos en él. |
Pasos siguientes
Para obtener más información sobre el módulo de Azure PowerShell, consulte la documentación de Azure PowerShell.
Puede encontrar ejemplos adicionales de script de PowerShell en la documentación de máquina virtual Windows de Azure.