Creare una macchina virtuale Windows da un disco specializzato usando PowerShellCreate a Windows VM from a specialized disk by using PowerShell

Creare una nuova macchina virtuale collegando un disco gestito specializzato come disco del sistema operativo.Create a new VM by attaching a specialized managed disk as the OS disk. Un disco specializzato è una copia di un disco rigido virtuale proveniente da una macchina virtuale esistente che contiene gli account utente, le applicazioni e altri dati di stato dalla macchina virtuale originale.A specialized disk is a copy of a virtual hard disk (VHD) from an existing VM that contains the user accounts, applications, and other state data from your original VM.

Quando si usa un disco rigido virtuale specializzato per creare una nuova VM, la nuova VM mantiene il nome computer della VM originale.When you use a specialized VHD to create a new VM, the new VM retains the computer name of the original VM. Vengono mantenute anche altre informazioni specifiche del computer e, in alcuni casi, queste informazioni duplicate possono causare problemi.Other computer-specific information is also kept and, in some cases, this duplicate information could cause issues. Quando si copia una macchina virtuale, tenere presente quali tipi di informazioni specifiche del computer vengono usate dalle applicazioni.When copying a VM, be aware of what types of computer-specific information your applications rely on.

Sono disponibili diverse opzioni:You have several options:

È anche possibile usare il portale di Azure per creare una nuova macchina virtuale da un disco rigido virtuale specializzato.You can also use the Azure portal to create a new VM from a specialized VHD.

Questo articolo illustra come usare i dischi gestiti.This article shows you how to use managed disks. Se è presente una distribuzione legacy che richiede l'uso di un account di archiviazione, vedere Creare una VM da un disco rigido virtuale specializzato in un account di archiviazione.If you have a legacy deployment that requires using a storage account, see Create a VM from a specialized VHD in a storage account.

Prima di iniziareBefore you begin

Per usare PowerShell, verificare di avere la versione più recente del modulo di PowerShell AzureRM.Compute.To use PowerShell, make sure that you have the latest version of the AzureRM.Compute PowerShell module.

Install-Module AzureRM -RequiredVersion 6.0.0

Per altre informazioni, vedere Azure PowerShell.For more information, see Azure PowerShell.

Opzione 1: Usare un disco esistenteOption 1: Use an existing disk

Se è presente una macchina virtuale che è stata eliminata e si vuole riutilizzare il disco del sistema operativo per creare una nuova macchina virtuale, usare Get-AzureRmDisk.If you had a VM that you deleted and you want to reuse the OS disk to create a new VM, use Get-AzureRmDisk.

$resourceGroupName = 'myResourceGroup'
$osDiskName = 'myOsDisk'
$osDisk = Get-AzureRmDisk `
-ResourceGroupName $resourceGroupName `
-DiskName $osDiskName

Sarà quindi possibile collegare questo disco come disco del sistema operativo a una nuova macchina virtuale.You can now attach this disk as the OS disk to a new VM.

Opzione 2: Caricare un disco rigido virtuale specializzatoOption 2: Upload a specialized VHD

È possibile caricare il disco rigido virtuale da una VM specializzata creata con uno strumento di virtualizzazione locale, ad esempio Hyper-V, o da una VM esportata da un altro cloud.You can upload the VHD from a specialized VM created with an on-premises virtualization tool, like Hyper-V, or a VM exported from another cloud.

Preparare la macchina virtualePrepare the VM

Usare il disco rigido virtuale così com'è per creare una nuova macchina virtuale.Use the VHD as-is to create a new VM.

  • Preparare un disco rigido virtuale (VHD) di Windows per il caricamento in Azure.Prepare a Windows VHD to upload to Azure. Non generalizzare la macchina Virtuale usando Sysprep.Do not generalize the VM by using Sysprep.
  • Rimuovere tutti gli strumenti di virtualizzazione guest e gli agenti installati nella macchina virtuale, ad esempio gli strumenti VMware.Remove any guest virtualization tools and agents that are installed on the VM (such as VMware tools).
  • Verificare che la macchina virtuale sia configurata per ottenere l'indirizzo IP e le impostazioni DNS da DHCP.Make sure the VM is configured to get the IP address and DNS settings from DHCP. In questo modo il server ottiene un indirizzo IP all'interno della rete virtuale all'avvio.This ensures that the server obtains an IP address within the virtual network when it starts up.

Ottenere l'account di archiviazioneGet the storage account

Per archiviare il disco rigido virtuale caricato, sarà necessario un account di archiviazione di Azure.You'll need a storage account in Azure to store the uploaded VHD. È possibile usare un account di archiviazione esistente o crearne uno nuovo.You can either use an existing storage account or create a new one.

Mostra gli account di archiviazione disponibili.Show the available storage accounts.

Get-AzureRmStorageAccount

Per usare un account di archiviazione esistente, passare alla sezione Caricare il disco rigido virtuale.To use an existing storage account, proceed to the Upload the VHD section.

Creare un account di archiviazione.Create a storage account.

  1. Sarà necessario il nome del gruppo di risorse in cui verrà creato l'account di archiviazione.You'll need the name of the resource group where the storage account will be created. Usare Get-AzureRmResourceGroup per visualizzare tutti i gruppi di risorse presenti nella sottoscrizione.Use Get-AzureRmResourceGroup see all the resource groups that are in your subscription.

    Get-AzureRmResourceGroup
    

    Creare un gruppo di risorse denominato myResourceGroup nell'area Stati Uniti occidentali.Create a resource group named myResourceGroup in the West US region.

    New-AzureRmResourceGroup `
       -Name myResourceGroup `
       -Location "West US"
    
  2. Creare un account di archiviazione denominato mystorageaccount nel nuovo gruppo di risorse con il cmdlet New-AzureRmStorageAccount.Create a storage account named mystorageaccount in the new resource group by using the New-AzureRmStorageAccount cmdlet.

    New-AzureRmStorageAccount `
       -ResourceGroupName myResourceGroup `
       -Name mystorageaccount `
       -Location "West US" `
       -SkuName "Standard_LRS" `
       -Kind "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 archiviato nel contenitore denominato mycontainer e il nuovo nome del file sarà myUploadedVHD.vhd.The file is stored in the container named mycontainer and the new file name will be myUploadedVHD.vhd.

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

Se i comandi hanno esito positivo, si otterrà una risposta simile alla seguente:If the commands are successful, you'll 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.This command may take a while to complete, depending on your network connection and the size of your VHD file.

Creare un disco gestito dal disco rigido virtualeCreate a managed disk from the VHD

Creare un disco gestito dal disco rigido virtuale specializzato nell'account di archiviazione usando New-AzureRMDisk.Create a managed disk from the specialized VHD in your storage account by using New-AzureRMDisk. Questo esempio usa myOSDisk1 per il nome del disco, inserisce il disco nella risorsa di archiviazione Standard_LRS e usa https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd come URI per il disco rigido virtuale di origine.This example uses myOSDisk1 for the disk name, puts the disk in Standard_LRS storage, and uses https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd as the URI for the source VHD.

Creare un nuovo gruppo di risorse per la nuova VM.Create a new resource group for the new VM.

$destinationResourceGroup = 'myDestinationResourceGroup'
New-AzureRmResourceGroup -Location $location `
   -Name $destinationResourceGroup

Creare il nuovo disco del sistema operativo dal disco rigido virtuale caricato.Create the new OS disk from the uploaded VHD.

$sourceUri = 'https://storageaccount.blob.core.windows.net/vhdcontainer/osdisk.vhd'
$osDiskName = 'myOsDisk'
$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
    (New-AzureRmDiskConfig -AccountType Standard_LRS  `
    -Location $location -CreateOption Import `
    -SourceUri $sourceUri) `
    -ResourceGroupName $destinationResourceGroup

Opzione 3: Copiare una macchina virtuale di Azure esistenteOption 3: Copy an existing Azure VM

È possibile creare una copia di una macchina virtuale che usa dischi gestiti acquisendo uno snapshot della macchina virtuale e quindi usando tale snapshot per creare un nuovo disco gestito e una nuova macchina virtuale.You can create a copy of a VM that uses managed disks by taking a snapshot of the VM, and then by using that snapshot to create a new managed disk and a new VM.

Acquisire uno snapshot del disco del sistema operativoTake a snapshot of the OS disk

È possibile acquisire uno snapshot di un'intera macchina virtuale (tutti i dischi inclusi) o solo di un singolo disco.You can take a snapshot of an entire VM (including all disks) or of just a single disk. I passaggi seguenti illustrano come acquisire uno snapshot solo del disco del sistema operativo della macchina virtuale con il cmdlet New-AzureRmSnapshot.The following steps show you how to take a snapshot of just the OS disk of your VM with the New-AzureRmSnapshot cmdlet.

Per prima cosa, impostare alcuni parametri.First, set some parameters.

$resourceGroupName = 'myResourceGroup' 
$vmName = 'myVM'
$location = 'westus' 
$snapshotName = 'mySnapshot'  

Ottenere l'oggetto macchina virtuale.Get the VM object.

$vm = Get-AzureRmVM -Name $vmName `
   -ResourceGroupName $resourceGroupName

Ottenere il nome del disco del sistema operativo.Get the OS disk name.

$disk = Get-AzureRmDisk -ResourceGroupName $resourceGroupName `
  -DiskName $vm.StorageProfile.OsDisk.Name

Creare la configurazione dello snapshot.Create the snapshot configuration.

$snapshotConfig =  New-AzureRmSnapshotConfig `
  -SourceUri $disk.Id `
  -OsType Windows `
  -CreateOption Copy `
  -Location $location 

Ottenere lo snapshot.Take the snapshot.

$snapShot = New-AzureRmSnapshot `
   -Snapshot $snapshotConfig `
   -SnapshotName $snapshotName `
   -ResourceGroupName $resourceGroupName

Per usare questo snapshot per creare una macchina virtuale a prestazioni elevate, aggiungere il parametro -AccountType Premium_LRS al comando New-AzureRmSnapshot.To use this snapshot to create a VM that needs to be high-performing, add the parameter -AccountType Premium_LRS to the New-AzureRmSnapshot command. Questo parametro crea lo snapshot in modo tale che venga archiviato come un disco gestito Premium.This parameter creates the snapshot so that it's stored as a Premium Managed Disk. Poiché i dischi gestiti Premium sono più costosi di quelli Standard, assicurarsi che il disco Premium sia effettivamente necessario prima di usare questo parametro.Premium Managed Disks are more expensive than Standard, so be sure you'll need Premium before using this parameter.

Creare un nuovo disco dallo snapshotCreate a new disk from the snapshot

Creare un disco gestito dallo snapshot usando New-AzureRMDisk.Create a managed disk from the snapshot by using New-AzureRMDisk. Questo esempio usa myOSDisk come nome del disco.This example uses myOSDisk for the disk name.

Creare un nuovo gruppo di risorse per la nuova VM.Create a new resource group for the new VM.

$destinationResourceGroup = 'myDestinationResourceGroup'
New-AzureRmResourceGroup -Location $location `
   -Name $destinationResourceGroup

Impostare il nome del disco del sistema operativo.Set the OS disk name.

$osDiskName = 'myOsDisk'

Creare il disco gestito.Create the managed disk.

$osDisk = New-AzureRmDisk -DiskName $osDiskName -Disk `
    (New-AzureRmDiskConfig  -Location $location -CreateOption Copy `
    -SourceResourceId $snapshot.Id) `
    -ResourceGroupName $destinationResourceGroup

Creare la nuova VMCreate the new VM

Creare le risorse di rete e le altre risorse da usare nella nuova VM.Create networking and other VM resources to be used by the new VM.

Creare la subnet e la rete virtualeCreate the subnet and virtual network

Creare la rete virtuale e la subnet per la macchina virtuale.Create the virtual network and subnet for the VM.

  1. Creare la subnet.Create the subnet. In questo esempio viene creata una subnet denominata mySubNet nel gruppo di risorse myDestinationResourceGroup e il prefisso dell'indirizzo della subnet viene impostato su 10.0.0.0/24.This example creates a subnet named mySubNet, in the resource group myDestinationResourceGroup, and sets the subnet address prefix to 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. In questo esempio il nome della rete virtuale è myVnetName, la località specificata è Stati Uniti occidentali e il prefisso dell'indirizzo per la rete virtuale è 10.0.0.0/16.This example sets the virtual network name to myVnetName, the location to West US, and the address prefix for the virtual network to 10.0.0.0/16.

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

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

Per poter accedere alla macchina virtuale con RDP (Remote Desktop Protocol), sarà necessario avere una regola di sicurezza che consenta l'accesso RDP sulla porta 3389.To be able to sign in to your VM with remote desktop protocol (RDP), you'll need to have a security rule that allows RDP access on port 3389. Nell'esempio il disco rigido virtuale per la nuova macchina virtuale è stato creato da una macchina virtuale specializzata esistente, quindi è possibile usare un account esistente nella macchina virtuale di origine per RDP.In our example, the VHD for the new VM was created from an existing specialized VM, so you can use an account that existed on the source virtual machine for RDP.

In questo esempio il nome del gruppo di sicurezza di rete impostato è myNsg, mentre il nome della regola RDP è myRdpRule.This example sets the network security group (NSG) name to myNsg and the RDP rule name to myRdpRule.

$nsgName = "myNsg"

$rdpRule = New-AzureRmNetworkSecurityRuleConfig -Name myRdpRule -Description "Allow RDP" `
    -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 `
    -SourceAddressPrefix Internet -SourcePortRange * `
    -DestinationAddressPrefix * -DestinationPortRange 3389
$nsg = New-AzureRmNetworkSecurityGroup `
   -ResourceGroupName $destinationResourceGroup `
   -Location $location `
   -Name $nsgName -SecurityRules $rdpRule

Per altre informazioni sugli endpoint e sulle regole dei gruppi di sicurezza di rete, vedere Apertura di porte in una macchina virtuale tramite PowerShell.For more information about endpoints and NSG rules, see Opening ports to a VM in Azure by using PowerShell.

Creare un indirizzo IP pubblico e NICCreate a public IP address and NIC

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

  1. Creare l'IP pubblico.Create the public IP. In questo esempio, il nome dell'indirizzo IP pubblico è myIP.In this example, the public IP address name is set to myIP.

    $ipName = "myIP"
    $pip = New-AzureRmPublicIpAddress `
       -Name $ipName -ResourceGroupName $destinationResourceGroup `
       -Location $location `
       -AllocationMethod Dynamic
    
  2. Creare la scheda NIC.Create the NIC. In questo esempio, il nome specificato della scheda NIC è myNicName.In this example, the NIC name is set to myNicName.

    $nicName = "myNicName"
    $nic = New-AzureRmNetworkInterface -Name $nicName `
       -ResourceGroupName $destinationResourceGroup `
       -Location $location -SubnetId $vnet.Subnets[0].Id `
       -PublicIpAddressId $pip.Id `
       -NetworkSecurityGroupId $nsg.Id
    

Impostare il nome e le dimensioni della macchina virtualeSet the VM name and size

Questo esempio imposta il nome della macchina virtuale su myVM e le dimensioni su Standard_A2.This example sets the VM name to myVM and the VM size to Standard_A2.

$vmName = "myVM"
$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize "Standard_A2"

Aggiungere la scheda di interfaccia di reteAdd the NIC

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

Aggiungere il disco del sistema operativoAdd the OS disk

Aggiungere il disco del sistema operativo alla configurazione usando Set-AzureRmVMOSDisk.Add the OS disk to the configuration by using Set-AzureRmVMOSDisk. In questo esempio le dimensioni del disco vengono impostate su 128 GB e viene collegato il disco gestito come disco del sistema operativo Windows.This example sets the size of the disk to 128 GB and attaches the managed disk as a Windows OS disk.

$vm = Set-AzureRmVMOSDisk -VM $vm -ManagedDiskId $osDisk.Id -StorageAccountType Standard_LRS `
    -DiskSizeInGB 128 -CreateOption Attach -Windows

Completare la VMComplete the VM

Creare la macchina virtuale usando New-AzureRMVM con le configurazioni appena create.Create the VM by using New-AzureRMVM with the configurations that we just created.

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

Se il comando ha esito positivo, viene visualizzato un output simile al seguente:If this command is successful, you'll see output like this:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK   

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

La macchina virtuale appena creata verrà visualizzata nel portale di Azure in Sfoglia > Macchine virtuali oppure usando i comandi di PowerShell seguenti.You should see the newly created VM either in the Azure portal under Browse > Virtual machines, or by using the following PowerShell commands.

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

Passaggi successiviNext steps

Accedere alla nuova macchina virtuale.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.