Uso di Hyper-V e Windows PowerShell

Dopo aver esaminato in dettaglio le nozioni di base per la distribuzione di Hyper-V, la creazione di macchine virtuali e la gestione di queste, vediamo come è possibile automatizzare molte di queste attività con PowerShell.

Ottenere un elenco di comandi Hyper-V

  1. Fare clic sul pulsante Start di Windows e digitare PowerShell.
  2. Eseguire il comando seguente per visualizzare l'elenco disponibile per la ricerca dei comandi PowerShell utilizzabili con il modulo PowerShell di Hyper-V.
Get-Command -Module hyper-v | Out-GridView

Si otterrà un elenco simile al seguente:

Screenshot of the Out Grid View showing the Command Type, Name, Version, and Source fields.

  1. Per altre informazioni su un particolare comando PowerShell, usare Get-Help. Se ad esempio si esegue il comando seguente, si ottengono informazioni sul comando Get-VM di Hyper-V.
Get-Help Get-VM

L'output mostra la sintassi del comando, i parametri obbligatori e facoltativi e gli alias che è possibile utilizzare.

Screenshot of the Administrator Windows Power Shell screen, showing the output of how to structure commands.

Ottenere un elenco di macchine virtuali

Per ottenere un elenco di macchine virtuali, usare il comando Get-VM.

  1. In PowerShell eseguire questo comando:
Get-VM

Verrà visualizzata una schermata simile alla seguente:

Screenshot of the Administrator Windows Power Shell screen showing the output after entering Get V M.

  1. Per ottenere l'elenco delle sole macchine virtuali in funzione, aggiungere un filtro al comando Get-VM. Per aggiungere un filtro è possibile usare il comando Where-Object. Per altre informazioni sui filtri, vedere la documentazione relativa all'uso di Where-Object.
Get-VM | where {$_.State -eq 'Running'}
  1. Per ottenere l'elenco di tutte le macchine virtuali disattivate, eseguire il comando seguente. Questo comando è una copia del comando al passaggio 2, ma il filtro è stato modificato da 'Running' a 'Off'.
Get-VM | where {$_.State -eq 'Off'}

Avviare e arrestare le macchine virtuali

  1. Per avviare una macchina virtuale specifica, eseguire il comando seguente con il nome della macchina virtuale desiderata:
Start-VM -Name <virtual machine name>
  1. Per avviare tutte le macchine virtuali disattivate, ottenerne l'elenco e inviarlo tramite pipe al comando Start-VM:
Get-VM | where {$_.State -eq 'Off'} | Start-VM
  1. Per arrestare tutte le macchine virtuali in esecuzione, eseguire il comando seguente:
Get-VM | where {$_.State -eq 'Running'} | Stop-VM

Creare il checkpoint di una macchina virtuale

Per creare un checkpoint usando PowerShell, selezionare la macchina virtuale con il comando Get-VM e inviarla tramite pipe al comando Checkpoint-VM. Assegnare infine un nome al checkpoint usando -SnapshotName. Il comando completo ha l'aspetto seguente:

Get-VM -Name <VM Name> | Checkpoint-VM -SnapshotName <name for snapshot>

Creare una nuova macchina virtuale

L'esempio seguente illustra come creare una nuova macchina virtuale in PowerShell Integrated Scripting Environment (ISE). È un esempio semplice che è possibile ampliare inserendo ulteriori funzionalità di PowerShell e distribuzioni più avanzate di macchine virtuali.

  1. Per aprire PowerShell ISE fare clic sul pulsante Start e digitare PowerShell ISE.
  2. Per creare una macchina virtuale eseguire il codice seguente . Per informazioni dettagliate sul comando New-VM, vedere la relativa New-VM documentazione.
 $VMName = "VMNAME"

 $VM = @{
     Name = $VMName
     MemoryStartupBytes = 2147483648
     Generation = 2
     NewVHDPath = "C:\Virtual Machines\$VMName\$VMName.vhdx"
     NewVHDSizeBytes = 53687091200
     BootDevice = "VHD"
     Path = "C:\Virtual Machines\$VMName"
     SwitchName = (Get-VMSwitch).Name
 }

 New-VM @VM

Riepilogo e documentazione di riferimento

Questo documento ha illustrato alcuni semplici passaggi per esplorare il modulo PowerShell di Hyper-V, nonché alcuni scenari di esempio. Per altre informazioni sul modulo PowerShell di Hyper-V, vedere la documentazione di riferimento sui cmdlet di Hyper-V in Windows PowerShell.