Caricare un disco rigido virtuale generalizzato e usarlo per creare nuove macchine virtuali in AzureUpload a generalized VHD and use it to create new VMs in Azure

Questo argomento illustra come usare PowerShell per caricare un disco rigido virtuale di una macchina virtuale generalizzata in Azure, creare un'immagine dal disco rigido virtuale e quindi una nuova macchina virtuale da tale immagine.This topic walks you through using PowerShell to upload a VHD of a generalized VM to Azure, create an image from the VHD and create a new VM from that image. È possibile caricare un disco rigido virtuale esportato da uno strumento di virtualizzazione locale o da un altro cloud.You can upload a VHD exported from an on-premises virtualization tool or from another cloud. Usando Managed Disks per la nuova macchina virtuale è possibile semplificarne la gestione e ottenere una maggiore disponibilità posizionando la macchina virtuale in un set di disponibilità.Using Managed Disks for the new VM simplifies the VM managment and provides better availability when the VM is placed in an availability set.

Se si vuole usare uno script di esempio, vedere Script di esempio per caricare un disco rigido virtuale in Azure e creare una nuova macchina virtualeIf you want to use a sample script, see Sample script to upload a VHD to Azure and create a new VM

Prima di iniziareBefore you begin

Generalizzare la macchina virtuale Windows con SysprepGeneralize the Windows VM using Sysprep

Sysprep rimuove anche tutte le informazioni sull'account personale e prepara la VM da usare come immagine.Sysprep removes all your personal account information, among other things, and prepares the machine to be used as an image. Per altre informazioni su Sysprep, vedere Come usare Sysprep: Introduzione.For details about Sysprep, see How to Use Sysprep: An Introduction.

Assicurarsi che i ruoli server in esecuzione sulla macchina siano supportati da Sysprep.Make sure the server roles running on the machine are supported by Sysprep. Per ulteriori informazioni, vedere Supporto Sysprep per i ruoli serverFor more information, see Sysprep Support for Server Roles

Importante

Se si esegue Sysprep prima di caricare il disco rigido virtuale in Azure per la prima volta, verificare di aver preparato la VM prima di eseguire Sysprep.If you are running Sysprep before uploading your VHD to Azure for the first time, make sure you have prepared your VM before running Sysprep.

  1. Accedere alla macchina virtuale Windows.Sign in to the Windows virtual machine.
  2. Aprire la finestra del prompt dei comandi come amministratore.Open the Command Prompt window as an administrator. Impostare la directory su %windir%\system32\sysprep, quindi eseguire sysprep.exe.Change the directory to %windir%\system32\sysprep, and then run sysprep.exe.
  3. Nella finestra di dialogo Utilità preparazione sistema selezionare Passare alla Configurazione guidata e verificare che la casella di controllo Generalizza sia selezionata.In the System Preparation Tool dialog box, select Enter System Out-of-Box Experience (OOBE), and make sure that the Generalize check box is selected.
  4. In Opzioni di arresto del sistema selezionare Arresta il sistema.In Shutdown Options, select Shutdown.
  5. Fare clic su OK.Click OK.

    Avvio di Sysprep

  6. Al termine, Sysprep arresta la macchina virtuale.When Sysprep completes, it shuts down the virtual machine. Non riavviare la VM.Do not restart the VM.

Accedere ad AzureLog in to Azure

Se PowerShell versione 1.4 o successiva non è già stato installato, vedere Come installare e configurare Azure PowerShell.If you don't already have PowerShell version 1.4 or above installed, read How to install and configure Azure PowerShell.

  1. Aprire Azure PowerShell e accedere al proprio account di Azure.Open Azure PowerShell and sign in to your Azure account. Verrà visualizzata una finestra popup in cui immettere le credenziali dell'account Azure.A pop-up window opens for you to enter your Azure account credentials.

    Login-AzureRmAccount
    
  2. Ottenere l'ID di sottoscrizione per le sottoscrizioni disponibili.Get the subscription IDs for your available subscriptions.

    Get-AzureRmSubscription
    
  3. Impostare la sottoscrizione corretta utilizzandone l'ID.Set the correct subscription using the subscription ID. Sostituire con l'ID della sottoscrizione corretta.Replace with the ID of the correct subscription.

    Select-AzureRmSubscription -SubscriptionId "<subscriptionID>"
    

Ottenere l'account di archiviazioneGet the storage account

Per archiviare l'immagine della VM caricata, è necessario un account di archiviazione di Azure.You need a storage account in Azure to store the uploaded VM image. È possibile usare un account di archiviazione esistente o crearne uno nuovo.You can either use an existing storage account or create a new one.

Se il disco rigido virtuale verrà usato per creare un disco gestito per una macchina virtuale, la posizione dell'account di archiviazione deve corrispondere al percorso in cui verrà creata la macchina virtuale.If you will be using the VHD to create a managed disk for a VM, the storage account location must be same the location where you will be creating the VM.

Per mostrare gli account di archiviazione disponibili, digitare:To show the available storage accounts, type:

Get-AzureRmStorageAccount

Se si vuole usare un account di archiviazione esistente, passare alla sezione Caricare l'immagine della VM .If you want to use an existing storage account, proceed to the Upload the VM image section.

Per creare un account di archiviazione, seguire questa procedura:If you need to create a storage account, follow these steps:

  1. È necessario il nome del gruppo di risorse in cui deve essere creato l'account di archiviazione.You need the name of the resource group where the storage account should be created. Per trovare tutti i gruppi di risorse inclusi nella sottoscrizione digitare:To find out all the resource groups that are in your subscription, type:

    Get-AzureRmResourceGroup
    

    Per creare un gruppo di risorse denominato myResourceGroup nell'area Stati Uniti orientali, digitare:To create a resource group named myResourceGroup in the East US region, type:

    New-AzureRmResourceGroup -Name myResourceGroup -Location "East US"
    
  2. Creare un account di archiviazione denominato mystorageaccount in questo gruppo di risorse con il cmdlet New-AzureRmStorageAccount.Create a storage account named mystorageaccount in this resource group by using the New-AzureRmStorageAccount cmdlet:

    New-AzureRmStorageAccount -ResourceGroupName myResourceGroup -Name mystorageaccount -Location "East US"`
        -SkuName "Standard_LRS" -Kind "Storage"
    

    I valori validi -SkuName validi sono:Valid values for -SkuName are:

    • Standard_LRS: archiviazione con ridondanza locale.Standard_LRS - Locally redundant storage.
    • Standard_ZRS: archiviazione con ridondanza della zona.Standard_ZRS - Zone redundant storage.
    • Standard_GRS: archiviazione con ridondanza geografica.Standard_GRS - Geo redundant storage.
    • Standard_RAGRS: archiviazione con ridondanza geografica e accesso in lettura.Standard_RAGRS - Read access geo redundant storage.
    • Premium_LRS: archiviazione con ridondanza locale Premium.Premium_LRS - Premium locally redundant storage.

Caricare il disco rigido virtuale nell'account di archiviazioneUpload the VHD to your storage account

Usare il cmdlet Add-AzureRmVhd per caricare il disco rigido virtuale in un contenitore nell'account di archiviazione.Use the Add-AzureRmVhd cmdlet to upload the VHD to a container in your storage account. In questo esempio, il file myVHD.vhd viene caricato da "C:\Users\Public\Documents\Virtual hard disks" in un account di archiviazione denominato mystorageaccount nel gruppo di risorse myResourceGroup.This example uploads the file myVHD.vhd from "C:\Users\Public\Documents\Virtual hard disks" to a storage account named mystorageaccount in the myResourceGroup resource group. Il file viene inserito nel contenitore denominato mycontainer e il nuovo nome del file sarà myUploadedVHD.vhd.The file will be placed into the container named mycontainer and the new file name will be myUploadedVHD.vhd.

$rgName = "myResourceGroup"
$urlOfUploadedImageVhd = "https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd"
Add-AzureRmVhd -ResourceGroupName $rgName -Destination $urlOfUploadedImageVhd `
    -LocalFilePath "C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd"

Se l'operazione riesce, si ottiene una risposta simile alla seguente:If successful, you get a response that looks similar to this:

MD5 hash is being calculated for the file C:\Users\Public\Documents\Virtual hard disks\myVHD.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:03:35
Creating new page blob of size 53687091712...
Elapsed time for upload: 01:12:49

LocalFilePath           DestinationUri
-------------           --------------
C:\Users\Public\Doc...  https://mystorageaccount.blob.core.windows.net/mycontainer/myUploadedVHD.vhd

L'esecuzione del comando potrebbe richiedere del tempo, a seconda della connessione di rete e delle dimensioni del file VHD.Depending on your network connection and the size of your VHD file, this command may take a while to complete

Salvare il percorso dell'URI di destinazione da usare in seguito se si desidera creare un disco gestito o una nuova macchina virtuale con il disco rigido virtuale caricato.Save the Destination URI path to use later if you are going to create a managed disk or a new VM using the uploaded VHD.

Altre opzioni per il caricamento di un disco rigido virtualeOther options for uploading a VHD

È anche possibile caricare un disco rigido virtuale nell'account di archiviazione tramite uno dei seguenti modi:You can also upload a VHD to your storage account using one of the following:

Creare un'immagine gestita dal disco rigido virtuale caricatoCreate a managed image from the uploaded VHD

Creare un'immagine gestita tramite il disco rigido virtuale del sistema operativo generalizzato.Create a managed image using your generalized OS VHD. Sostituire i valori con i propri.Replace the values with your own information.

  1. Innanzitutto, impostare i parametri comuni:First, set the common parameters:

    $vmName = "myVM"
    $computerName = "myComputer"
    $vmSize = "Standard_DS1_v2"
    $location = "East US" 
    $imageName = "yourImageName"
    
  2. Creare un'immagine tramite il disco rigido virtuale del sistema operativo generalizzato.Create the image using your generalized OS VHD.

    $imageConfig = New-AzureRmImageConfig -Location $location
    $imageConfig = Set-AzureRmImageOsDisk -Image $imageConfig -OsType Windows -OsState Generalized -BlobUri $urlOfUploadedImageVhd
    $image = New-AzureRmImage -ImageName $imageName -ResourceGroupName $rgName -Image $imageConfig
    

Crea rete virtualeCreate a virtual network

Creare la rete virtuale e la subnet della rete virtuale stessa.Create the vNet and subnet of the virtual network.

  1. Creare la subnet.Create the subnet. Questo esempio crea una subnet denominata mySubnet con un prefisso di indirizzo di 10.0.0.0/24.This example creates a subnet named mySubnet with the address prefix of 10.0.0.0/24.

    $subnetName = "mySubnet"
    $singleSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24
    
  2. Creare la rete virtuale.Create the virtual network. Questo esempio crea una rete virtuale denominata myVnet con un prefisso di indirizzo di 10.0.0.0/16.This example creates a virtual network named myVnet with the address prefix of 10.0.0.0/16.

    $vnetName = "myVnet"
    $vnet = New-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName -Location $location `
        -AddressPrefix 10.0.0.0/16 -Subnet $singleSubnet
    

Creare un indirizzo IP pubblico e un'interfaccia di reteCreate a public IP address and network interface

Per abilitare la comunicazione con la macchina virtuale nella rete virtuale, sono necessari un indirizzo IP pubblico e un'interfaccia di rete.To enable communication with the virtual machine in the virtual network, you need a public IP address and a network interface.

  1. Creare un indirizzo IP pubblico.Create a public IP address. In questo esempio viene creato un indirizzo IP pubblico denominato myPip.This example creates a public IP address named myPip.

    $ipName = "myPip"
    $pip = New-AzureRmPublicIpAddress -Name $ipName -ResourceGroupName $rgName -Location $location `
        -AllocationMethod Dynamic
    
  2. Creare la scheda NIC.Create the NIC. In questo esempio viene creata una scheda NIC denominata myNic.This example creates a NIC named myNic.

    $nicName = "myNic"
    $nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $location `
        -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id
    

Creare il gruppo di sicurezza di rete e una regola RDPCreate the network security group and an RDP rule

Per essere in grado di accedere alla VM tramite RDP, è necessario disporre di una regola di sicurezza della rete (NSG) che consenta l'accesso RDP sulla porta 3389.To be able to log in to your VM using RDP, you need to have a network security rule (NSG) that allows RDP access on port 3389.

In questo esempio viene creato un gruppo di sicurezza di rete denominato myNsg contenente una regola denominata myRdpRule che consente il traffico RDP sulla porta 3389.This example creates an NSG named myNsg that contains a rule called myRdpRule that allows RDP traffic over port 3389. Per altre informazioni sui gruppi di sicurezza di rete, vedere Apertura di porte a una VM tramite PowerShell.For more information about NSGs, see Opening ports to a VM in Azure using PowerShell.

$nsgName = "myNsg"
$ruleName = "myRdpRule"
$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name $ruleName -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389

$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $location `
    -Name $nsgName -SecurityRules $rdpRule

Creare una variabile per la rete virtualeCreate a variable for the virtual network

Creare una variabile per la rete virtuale realizzata.Create a variable for the completed virtual network.

$vnet = Get-AzureRmVirtualNetwork -ResourceGroupName $rgName -Name $vnetName

Ottenere le credenziali per la macchina virtualeGet the credentials for the VM

Il cmdlet seguente apre una finestra in cui verrà immesso un nuovo nome utente e una nuova password da usare come account dell'amministratore locale per accedere in da remoto alla macchina virtuale.The following cmdlet will open a window where you will enter a new user name and password to use as the local administrator account for remotely accessing the VM.

$cred = Get-Credential

Aggiungere il nome della macchina virtuale e le dimensioni per la configurazione della macchina virtuale.Add the VM name and size to the VM configuration.

$vm = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize

Impostare l'immagine della macchina virtuale come immagine di origine per la nuova macchina virtualeSet the VM image as source image for the new VM

Impostare l'immagine di origine usando l'ID dell'immagine di macchina virtuale gestita.Set the source image using the ID of the managed VM image.

$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id

Impostare la configurazione del sistema operativo e aggiungere la scheda di interfaccia di rete.Set the OS configuration and add the NIC.

Immettere il tipo di archiviazione (PremiumLRS o StandardLRS) e le dimensioni del disco del sistema operativo.Enter the storage type (PremiumLRS or StandardLRS) and the size of the OS disk. In questo esempio il tipo di account viene impostato su PremiumLRS, le dimensioni del disco su 128 GB e il caching del disco su ReadWrite.This example sets the account type to PremiumLRS, the disk size to 128 GB and disk caching to ReadWrite.

$vm = Set-AzureRmVMOSDisk -VM $vm -DiskSizeInGB 128 `
-CreateOption FromImage -Caching ReadWrite

$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $computerName `
-Credential $cred -ProvisionVMAgent -EnableAutoUpdate

$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id

Creare la VMCreate the VM

Creare la nuova VM usando la configurazione archiviata nella variabile $vm.Create the new VM using the configuration stored in the $vm variable.

New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $location

Verificare che la VM sia stata creataVerify that the VM was created

Al termine, la VM appena creata dovrebbe essere visualizzata nel portale di Azure in Browse (Sfoglia) > Macchine virtuali. In alternativa, è possibile usare i comandi PowerShell seguenti:When complete, you should see the newly created VM in the Azure portal under Browse > Virtual machines, or by using the following PowerShell commands:

    $vmList = Get-AzureRmVM -ResourceGroupName $rgName
    $vmList.Name

Passaggi successiviNext steps

Per accedere alla nuova macchina virtuale, passare alla VM nel portale, fare clic su Connettie aprire il file RDP di Desktop remoto.To sign in to your new virtual machine, browse to the VM in the portal, click Connect, and open the Remote Desktop RDP file. Usare le credenziali dell'account della macchina virtuale originale per accedere alla nuova macchina virtuale.Use the account credentials of your original virtual machine to sign in to your new virtual machine. Per altre informazioni, vedere Come connettersi e accedere a una macchina virtuale di Azure che esegue Windows.For more information, see How to connect and log on to an Azure virtual machine running Windows.