Se stai utilizzando la piattaforma di virtualizzazione Hyper-V di Microsoft per eseguire macchine virtuali, probabilmente conosci l’utilizzo di Hyper-V Manager. Ma sai che puoi fare di più in meno tempo con il modulo PowerShell di Hyper-V?
In questo tutorial, imparerai come gestire le macchine virtuali Hyper-V con PowerShell, inclusa la creazione, la rimozione e anche l’utilizzo degli snapshot delle VM!
Prerequisiti
Per questo tutorial, avrai bisogno di quanto segue:
- A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
- A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
- A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.
Connessione a un host Hyper-V remoto
Per lavorare con Hyper-V in PowerShell, è necessario poter comunicare con l’host Hyper-V in qualche modo. Puoi farlo a livello locale eseguendo i cmdlet di PowerShell di Hyper-V fornendo il nome dell’host Hyper-V, oppure puoi utilizzare il PowerShell Remoting per connetterti direttamente all’host Hyper-V.
In questo tutorial, stabilirai una connessione persistente all’host Hyper-V e eseguirai i comandi direttamente sull’host Hyper-V.
1. Apri PowerShell sul tuo computer locale.
2. Esegui il cmdlet Enter-PSSession
fornendo l’hostname del tuo host Hyper-V remoto per il parametro ComputerName
. Questa azione crea una sessione interattiva e ti permette di eseguire comandi in modo interattivo sull’host Hyper-V remoto.
Se il tuo client e l’host Hyper-V sono membri dello stesso dominio Active Directory, non è necessario utilizzare il parametro
Credential
.
3. Ti verrà quindi richiesto un nome utente e una password per connetterti all’host Hyper-V. Questo nome utente e questa password saranno di un utente amministratore locale sull’host remoto. Una volta connesso, dovresti vedere che il prompt di PowerShell è cambiato per mostrare l’hostname dell’host Hyper-V.
Ora sei pronto per iniziare a eseguire comandi!
Creazione di VM Hyper-V con PowerShell
Presumendo che ora sei connesso al tuo host Hyper-V utilizzando PowerShell Remoting, iniziamo a eseguire comandi creando una VM Hyper-V.
Creazione di una VM Semplice
Mentre sei nella sessione PSRemoting connessa all’host Hyper-V remoto:
Esegui il cmdlet New-VM
per creare una nuova VM. Quando crei una VM con il cmdlet New-VM
, hai molte opzioni diverse da scegliere su come crearla.
1. In questo esempio sottostante, il tutorial sta creando una VM con:
- A name of MyVM (
HYPER
) - 512MB di RAM (
MemoryStartupBytes
)

Creazione di una VM Basata su Altri Attributi della VM
A volte è necessario creare una VM con attributi simili a un’altra VM. Puoi farlo assegnando vari attributi di VM a variabili e poi utilizzando quelle variabili durante la creazione della nuova VM. Come esempio:
1. Esegui il comando Get-VM
per interrogare gli attributi di una VM esistente assegnando l’output a una variabile come mostrato di seguito.
2. Esegui il cmdlet Get-VMMemory
fornendo il nome della VM da cui raccogliere gli attributi (in questo caso, la memoria), e assegna il valore della memoria a una variabile.
3. Successivamente, crea una nuova VM con il cmdlet New-VM
fornendo il Nome
, la generazione della VM (Generazione
) utilizzando la proprietà Generazione
dall’altra VM, e la quantità di memoria dal valore ottenuto dall’altra VM.

Elenco delle VM esistenti con PowerShell
Ora che hai almeno due VM create sull’host Hyper-V, esploriamo come enumerare le VM create. Per farlo:
1. Esegui il cmdlet Get-VM
da solo. Quando lo esegui senza parametri, Get-VM
interroga l’host Hyper-V per tutte le VM esistenti. Get-VM

2. Forse desideri cercare solo una singola VM. In tal caso, utilizza il parametro -Nome
. Il comando di codice seguente sta interrogando Hyper-V per la VM creata in precedenza chiamata HYPER_old
. Get-VM -Nome HYPER_old

Successivamente, forse hai bisogno di trovare tutte le VM che si trovano in uno specifico Stato
. Nessun problema. Per farlo, esegui Get-VM
, che interroga tutte le VM ma invia l’output al cmdlet Where-Object
.
Nell’esempio seguente, il tubo ‘|’ limita l’output di Get-VM
solo agli oggetti VM con uno stato di Running
. Get-VM -Nome_VM HYPER_old | Where-Object {$_.State -eq 'Running'}

Avviare e arrestare le VM
In questo momento, probabilmente la VM creata in precedenza è ferma. Cambiamo questo avviandola e imparando quindi anche come arrestare le VM.
Nella sessione PowerShell dell’host Hyper-V remoto:
1. Esegui il cmdlet Start-VM
fornendo il nome (Nome
) della VM creata in precedenza con il parametro -Nome

Ora che la VM è avviata, arrestala usando il cmdlet Stop-VM
fornendo il nome della VM con il parametro Nome
.
Appena esegui il comando sopra, vedrai la VM spegnersi come mostrato nello screenshot sotto;

Modifica delle VM Hyper-V
Le VM non rimangono sempre le stesse. Forse devi aumentare le risorse CPU, o la VM sta costantemente esaurendo la memoria. In tal caso, il cmdlet Set-VM
è il tuo amico.
Come esempio di modifica delle VM esistenti, nella sessione PowerShell dell’host Hyper-V remoto:
Esegui il cmdlet Set-VM
per spegnere automaticamente la VM HYPER_old attualmente in esecuzione. Utilizza il parametro Name
per specificare la VM da impostare e specifica Shutdown
come valore per il parametro AutomaticStopAction
per assicurarti che la VM venga automaticamente arrestata correttamente quando viene spento l’host Hyper-V.
Salvataggio delle VM di Hyper-V
Nella sessione PowerShell remota dell’host Hyper-V, potresti dover salvare la VM che crei per preservare lo stato della memoria della VM per un uso successivo. Per fare ciò, utilizza il cmdlet Save-VM
con il parametro Name
specificando il nome della VM che desideri salvare.
Nota che la VM che desideri salvare deve trovarsi in uno stato di esecuzione.

Gestione dei checkpoint delle VM di Hyper-V
Se hai bisogno di salvare lo stato esistente di una VM prima di apportare modifiche o ripristinare le modifiche alla VM, dovresti apprendere riguardo ai checkpoint. I checkpoint sono un modo pratico per salvare rapidamente lo stato del disco e della memoria di qualsiasi VM di Hyper-V.
Mentre sei sull’host Hyper-V, esegui il cmdlet Checkpoint-VM
, fornendo il nome della VM da salvare e un nome per il checkpoint.
Il parametro nome,
SnapshotName
, fa ancora riferimento alla vecchia terminologia utilizzata in Hyper-V 2012. Uno snapshot è la stessa cosa di un checkpoint.

Una volta creato un checkpoint, è possibile utilizzare il cmdlet Get-VMSnapshot
per recuperare tutti gli snapshot archiviati sull’host Hyper-V. Di seguito, puoi vedere che la VM HYPER_old ha tre checkpoint.

Conclusion
Se hai seguito tutte le demo in questo tutorial, sei sulla buona strada per gestire le VM Hyper-V con PowerShell. Dovresti ora avere le conoscenze necessarie per gestire 1, 10 o addirittura 100 VM!
Quali tipi di attività pensi di poter automatizzare ora con PowerShell e Hyper-V?