Skapa en virtuell Windows-dator från en specialiserad disk med PowerShell

Gäller för: ✔️ Windows virtuella datorer

Skapa en ny virtuell dator genom att koppla en specialiserad hanterad disk som OS-disk. En specialiserad disk är en kopia av en virtuell hårddisk (VHD) från en befintlig virtuell dator som innehåller användarkonton, program och andra tillståndsdata från den ursprungliga virtuella datorn.

I det syftet har du flera alternativ:

Du kan också använda Azure Portal för att skapa en ny virtuell dator från en specialiserad virtuell hårddisk.

Den här artikeln visar hur du använder hanterade diskar. Om du har en äldre distribution som kräver att du använder ett lagringskonto kan du se Skapa en virtuell dator från en specialiserad virtuell hårddisk i ett lagringskonto.

Viktigt

När du använder en specialiserad disk för att skapa en ny virtuell dator behåller den nya virtuella datorn datornamnet för den ursprungliga virtuella datorn. Annan datorspecifik information (t.ex. CMID) sparas också och i vissa fall kan den duplicerade informationen orsaka problem. När du kopierar en virtuell dator bör du vara medveten om vilka typer av datorspecifik information som dina program förlitar sig på.
Använd därför inte en specialiserad disk om du vill skapa flera virtuella datorer. I stället skapar du en avbildning för större distributioner och använder sedan avbildningen för att skapa flera virtuella datorer.

Vi rekommenderar att du begränsar antalet samtidiga distributioner till 20 virtuella datorer från en enda virtuell hårddisk eller ögonblicksbild.

Alternativ 1: Använd en befintlig disk

Om du har en virtuell dator som du har tagit bort och vill återanvända OS-disken för att skapa en ny virtuell dator använder du Get-AzDisk.

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

Du kan nu ansluta den här disken som OS-disk till en ny virtuell dator.

Alternativ 2: Upload en specialiserad virtuell hårddisk

Du kan ladda upp den virtuella hårddisken från en specialiserad virtuell dator som skapats med ett lokalt virtualiseringsverktyg som Hyper-V eller en virtuell dator som exporterats från ett annat moln.

Förbereda den virtuella datorn

Använd den virtuella hårddisken som den är för att skapa en ny virtuell dator.

  • Förbered en virtuell Windows hårddisk för uppladdning till Azure. Generalisera inte den virtuella datorn med hjälp av Sysprep.
  • Ta bort eventuella gästvirtualiseringsverktyg och agenter som är installerade på den virtuella datorn (till exempel VMware-verktyg).
  • Kontrollera att den virtuella datorn är konfigurerad för att hämta IP-adressen och DNS-inställningarna från DHCP. Detta säkerställer att servern får en IP-adress i det virtuella nätverket när den startas.

Upload den virtuella hårddisken

Nu kan du ladda upp en virtuell hårddisk direkt till en hanterad disk. Instruktioner finns i Upload vhd till Azure med hjälp av Azure PowerShell.

Alternativ 3: Kopiera en befintlig virtuell Azure-dator

Du kan skapa en kopia av en virtuell dator som använder hanterade diskar genom att ta en ögonblicksbild av den virtuella datorn och sedan använda ögonblicksbilden för att skapa en ny hanterad disk och en ny virtuell dator.

Om du vill kopiera en befintlig virtuell dator till en annan region kan du använda azcopy för att skapa en kopia av en disk i en annan region.

Ta en ögonblicksbild av OS-disken

Du kan ta en ögonblicksbild av en hel virtuell dator (inklusive alla diskar) eller bara en enda disk. Följande steg visar hur du tar en ögonblicksbild av bara OS-disken på den virtuella datorn med cmdleten New-AzSnapshot.

Ange först några parametrar.

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

Hämta VM-objektet.

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

Hämta OS-diskens namn.

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

Skapa konfigurationen av ögonblicksbilden.

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

Ta ögonblicksbilden.

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

Om du vill använda den här ögonblicksbilden för att skapa en virtuell dator som måste ha höga prestanda lägger du till parametern -AccountType Premium_LRS i New-AzSnapshotConfig kommandot. Den här parametern skapar ögonblicksbilden så att den lagras som en Premium Managed Disk. Premium Managed Disks är dyrare än Standard, så se till att du måste Premium innan du använder den här parametern.

Skapa en ny disk från ögonblicksbilden

Skapa en hanterad disk från ögonblicksbilden med hjälp av New-AzDisk. I det här exemplet används myOSDisk som disknamn.

Skapa en ny resursgrupp för den nya virtuella datorn.

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

Ange os-diskens namn.

$osDiskName = 'myOsDisk'

Skapa den hanterade disken.

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

Skapa den nya virtuella datorn

Skapa nätverk och andra VM-resurser som ska användas av den nya virtuella datorn.

Skapa undernätet och det virtuella nätverket

Skapa det virtuella nätverket och undernätet för den virtuella datorn.

  1. Skapa undernätet. Det här exemplet skapar ett undernät med namnet mySubNeti resursgruppen myDestinationResourceGroupoch anger adressprefixet för undernätet till 10.0.0.0/24.

    $subnetName = 'mySubNet'
    $singleSubnet = New-AzVirtualNetworkSubnetConfig `
       -Name $subnetName `
       -AddressPrefix 10.0.0.0/24
    
  2. Skapa det virtuella nätverket. I det här exemplet anges namnet på det virtuella nätverket till myVnetName,platsen till USA, västra ochadressprefixet för det virtuella nätverket till 10.0.0.0/16.

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

Skapa nätverkssäkerhetsgruppen och en RDP-regel

För att kunna logga in på den virtuella datorn med remote desktop protocol (RDP) måste du ha en säkerhetsregel som tillåter RDP-åtkomst på port 3389. I vårt exempel skapades den virtuella hårddisken för den nya virtuella datorn från en befintlig specialiserad virtuell dator, så du kan använda ett konto som fanns på den virtuella källdatorn för RDP. I det här exemplet nekas RDP-trafik att vara säkrare. Du kan ändra -Access till om du vill tillåta Allow RDP-åtkomst.

I det här exemplet anges namnet på nätverkssäkerhetsgruppen (NSG) till myNsg och RDP-regelnamnet till myRdpRule.

$nsgName = "myNsg"

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

Mer information om slutpunkter och NSG-regler finns i Öppna portar till en virtuell dator i Azure med hjälp av PowerShell.

Skapa en offentlig IP-adress och ett nätverkskort

Om du vill aktivera kommunikation med den virtuella datorn i det virtuella nätverket behöver du en offentlig IP-adress och ett nätverksgränssnitt.

  1. Skapa den offentliga IP-adressen. I det här exemplet anges namnet på den offentliga IP-adressen till myIP.

    $ipName = "myIP"
    $pip = New-AzPublicIpAddress `
       -Name $ipName -ResourceGroupName $destinationResourceGroup `
       -Location $location `
       -AllocationMethod Dynamic
    
  2. Skapa nätverkskortet. I det här exemplet är nätverkskortnamnet inställt på myNicName.

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

Ange namn och storlek för den virtuella datorn

I det här exemplet anges namnet på den virtuella datorn till myVM och VM-storleken till Standard_A2.

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

Lägg till nätverkskortet

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

Lägg till OS-disken

Lägg till OS-disken i konfigurationen med hjälp av Set-AzVMOSDisk. Det här exemplet anger storleken på disken till 128 GB och kopplar den hanterade disken som en Windows OS-disk.

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

Slutför den virtuella datorn

Skapa den virtuella datorn med hjälp av New-AzVM med de konfigurationer som vi nyss skapade.

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

Om kommandot lyckas visas utdata som liknar följande:

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

Kontrollera att den virtuella datorn har skapats

Du bör se den nyligen skapade virtuella datorn antingen Azure Portal under Bläddrabland virtuella datorer eller med hjälp av följande PowerShell-kommandon.

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

Nästa steg

Logga in på den nya virtuella datorn. Mer information finns i Ansluta och logga in på en virtuell Azure-dator som kör Windows.