Comandi PowerShell essenziali per Hyper-V: cosa sono e come utilizzarli
La gestione degli ambienti Hyper-V può essere un compito impegnativo. Pertanto, è necessario uno strumento di gestione potente per configurare e controllare l’infrastruttura virtuale da una console centrale. Oltre all’interfaccia utente grafica, Hyper-V fornisce un’interfaccia a riga di comando che utilizza PowerShell per la gestione di Hyper-V.
In questo post del blog descriviamo come funziona PowerShell, quali comandi Hyper-V PowerShell possono migliorare le prestazioni delle VM e come questo strumento CLI può semplificare notevolmente il processo di gestione di Hyper-V.
Che cos’è PowerShell?
PowerShell è un framework per l’automazione delle attività e la gestione della configurazione sviluppato da Microsoft, che include una shell a riga di comando e un linguaggio di scripting associato basato su .NET Framework e .NET Core.
I comandi PowerShell, noti anche come cmdlet, possono essere utilizzati per automatizzare varie attività organizzando diversi cmdlet in un unico script PowerShell. Microsoft ha sviluppato più di cento comandi PowerShell di base che possono essere utilizzati per eseguire attività complesse e di base.
Cosa può fare PowerShell?
PowerShell può aiutare gli amministratori Hyper-V ad automatizzare rapidamente le attività di gestione dei sistemi operativi (Linux, macOS e Windows) e dei processi associati. A differenza degli strumenti GUI, PowerShell consente di gestire l’intero sistema utilizzando solo la riga di comando.
Inoltre, è possibile salvare i comandi Hyper-V PowerShell obbligatori in un file di testo (con estensione .ps1 ) e quindi eseguire questo script per eseguire determinate attività. Inoltre, è possibile pianificare l’esecuzione degli script PowerShell a un’ora prestabilita utilizzando l’Utilità di pianificazione.
Come aprire PowerShell
Esistono diversi modi per eseguire PowerShell in Hyper-V. Un modo semplice per accedere a PowerShell è connettersi direttamente a un server Hyper-V e avviarlo da lì. Per connettersi in remoto a un host Hyper-V, è necessario assicurarsi che Desktop remoto sia abilitato. Una volta abilitato Desktop remoto, è possibile utilizzare l’utilità Desktop remoto e connettersi in remoto al server come si farebbe con qualsiasi GUI (interfaccia utente grafica) di Windows Server.
Apertura di PowerShell da GUI
Per aprire PowerShell in un sistema operativo basato su GUI, procedere come segue:
- È necessario fare clic su Avviare e digitare PowerShell nella barra di ricerca.
- Fare clic con il pulsante destro del mouse sull’icona PowerShell e selezionare Esegui come amministratore per aprire PowerShell in modalità elevata.
Apertura di PowerShell da riga di comando
Per eseguire PowerShell se si utilizza Windows Server Core o Hyper-V Server, attenersi alla procedura seguente:
- Digitare PowerShell nel prompt dei comandi e premere Immettere.
- Una sessione di Windows PowerShell dovrebbe avviarsi automaticamente nella finestra del prompt dei comandi. Al prompt dei comandi viene quindi aggiunto il prefisso PS per indicare che è stata avviata una sessione di Windows PowerShell.
- Una volta in PowerShell, è possibile utilizzare i comandi PowerShell specifici di Hyper-V, che tratteremo più avanti in questo post.
Impostazioni remote
Per verificare le impostazioni del desktop remoto in Windows Server Core o Hyper-V Server, è possibile avviare l’utilità sconfig se non è già stata avviata e configurarla utilizzando l’opzione 7. Inoltre, una volta connessi in remoto all’host Hyper-V, è possibile utilizzare l’opzione 15 per Uscire alla riga di comando.
Una volta lì, ti troverai in un normale cmd.exe ambiente, non in PowerShell. Per avviare un ambiente PowerShell, digita semplicemente powershell nella riga di comando.
PowerShell remoto
Utilizzando PowerShell, è anche possibile interagire in remoto con Hyper-V. In altre parole, è possibile eseguire in remoto i comandi PowerShell sull’host Hyper-V senza stabilire una connessione Desktop remoto.
Da la stazione di lavoro di amministrazione su cui sono caricati gli strumenti di gestione Hyper-V, è possibile eseguire i commandlet Hyper-V. Innanzitutto, è necessario installare gli strumenti Hyper-V, inclusi questi commandlet (cmdlet).
Install-WindowsFeature RSAT-Hyper-V-Tools
Una volta caricati gli strumenti, è possibile eseguire gli stessi tipi di comandi utilizzando il parametro -computername che punta al nostro host Hyper-V come nella schermata sottostante. Passiamo il nome del nostro host al comando PowerShell get-vm
12 comandi Hyper-V PowerShell essenziali
Esistono numerosi comandi Hyper-V PowerShell efficaci che possono rendere il processo di gestione di Hyper-V facile e semplice. Vediamo come è possibile utilizzare i diversi comandi Hyper-V PowerShell.
Get-Command
Iniziamo con un comando Hyper-V PowerShell utile per gli utenti che non hanno familiarità con PowerShell e non sanno quali cmdlet utilizzare e come. Eseguendo il comando Get-Command , è possibile visualizzare l’elenco completo di tutti i cmdlet (comandi di Windows PowerShell), le funzioni e gli alias disponibili installati sul computer.
Tuttavia, se si desidera restringere la ricerca e ottenere l’elenco dei comandi Hyper-V PowerShell che corrispondono a criteri specifici, è possibile utilizzare il cmdlet Get-Command *-VM per trovare l’elenco dei comandi che consentono di controllare e configurare le VM.
Modificando il parametro VM in VHD, è possibile ottenere l’elenco completo dei cmdlet utilizzati per la gestione dei dischi rigidi virtuali. È quindi possibile provare vari parametri di ricerca per ottenere i risultati desiderati.
Get-Help
Una volta deciso quale comando Hyper-V PowerShell utilizzare, è possibile scoprire di più su tale cmdlet. A tal fine, è possibile utilizzare il cmdlet Get-Help. Ad esempio, per scoprire di più sul cmdlet Get-VM, digitare quanto segue:
Get-Help Get-VM
Get-VM
Il comando PowerShell Get-VM consente di visualizzare tutte le VM disponibili su uno o più host Hyper-V. Per visualizzare tutte le VM sull’host Hyper-V locale, è necessario eseguire il cmdlet PowerShell Get-VM .
Nella schermata di PowerShell è possibile visualizzare l’elenco delle VM disponibili, inclusi nome, stato, utilizzo della CPU, memoria assegnata, tempo di attività, stato e versione.
Start-VM
Questo particolare avvia la VM Il cmdlet PowerShell consente di avviare una VM. A tal fine, eseguire il seguente comando Hyper-V PowerShell:
Start-VM -Name 'Windows Server 2016'
Di conseguenza, la VM denominata Windows Server 2016 viene avviata sull’host Hyper-V locale. Verifichiamo se la VM è stata effettivamente avviata eseguendo il cmdlet Get-VM cmdlet.
Inoltre, è possibile utilizzare una versione modificata del Start-VM cmdlet PowerShell per avviare le VM solo se i loro nomi iniziano con Hyper-V:
Start-VM -Name Hyper-V*
Come si può vedere, la VM denominata Hyper-V Server Desktop è stata avviata correttamente. Tuttavia, un’altra VM (Hyper-V Server 2012) era già in esecuzione e PowerShell lo segnala.
Stop-VM
Il cmdlet Stop-VM consente di arrestare o spegnere una VM. A tal fine, è possibile eseguire il seguente cmdlet:
Stop-VM -Name 'Windows Server 2016'
Come si può vedere, la VM selezionata è stata arrestata correttamente tramite il sistema operativo guest.
Un altro esempio è che è possibile spegnere le VM i cui nomi iniziano con Hyper-V:
Stop-VM -Name Hyper-V* -TurnOff
Se la VM non risponde, è possibile forzarne l’arresto. A tal fine, eseguire il seguente cmdlet PowerShell:
Stop-VM -Name 'Windows Server 2016' -Force
Si noti che l’arresto forzato è simile allo spegnimento di una macchina fisica, il che significa che può comportare la perdita dei dati dell’applicazione non salvati. In questo caso, si consiglia di salvare la VM per evitare potenziali perdite di dati. A tal fine, è necessario eseguire il cmdlet Save-VM , che equivale a mettere in ibernazione un computer fisico:
Save-VM -Name 'Windows Server 2016'
Se si desidera salvare le VM i cui nomi iniziano con Hyper-V, eseguire il seguente comando Hyper-V PowerShell:
Get-VM -Name Hyper-V* | Save-VM
Punto di controllo VM
Il cmdlet Punto di controllo-VM consente di creare un punto di controllo Hyper-V VM (noto anche come snapshot Hyper-V) . Esegui il seguente cmdlet per creare un punto di controllo denominato Update1 della VM specifica (Windows Server 2016):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
Per verificare che la VM sia stata creata correttamente, utilizzare il seguente comando Hyper-V PowerShell:
Get-VMSnapshot -VMName 'Windows Server 2016'
D’altra parte, se si desidera eliminare determinate istantanee Hyper-V, è possibile utilizzare il cmdlet Remove-VMSnapshot . Ad esempio, se si desidera eliminare tutte le istantanee VM i cui nomi iniziano con Test, dovremmo eseguire il seguente cmdlet:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
La schermata sopra mostra l’intero processo di eliminazione dei snapshots Hyper-V selezionati.
Test-VHD
Questo comando Hyper-V PowerShell serve a verificare che il file del disco rigido virtuale esista effettivamente e possa essere utilizzato per l’implementazione di Hyper-V. Il cmdlet è il seguente:
Test-VHD -Path C:Testing.vhd
Se il percorso VHD è valido, sullo schermo verrà visualizzato il seguente output:
Per ulteriori informazioni sulla gestione dei dischi rigidi virtuali tramite cmdlet di PowerShell, ti consigliamo di leggere il nostro post sul blog dedicato alle nozioni di base sull’utilizzo dei file VHD e VHDX di Hyper-V.
Measure-VM
Questo comando Hyper-V PowerShell consente di raccogliere dati sull’utilizzo delle risorse per una VM specifica. Ad esempio, eseguire il seguente cmdlet per ottenere informazioni sull’utilizzo della CPU, dell’RAM, della capacità del disco e del traffico di rete per la VM denominata Windows Server 2016:
Measure-VM -VMName 'Windows Server 2016'
Si noti che il cmdlet Measure-VM può riportare i dati obbligatori solo dopo che la misurazione delle risorse è stata abilitata su una VM. Per abilitare la misurazione delle risorse, utilizzare il seguente comando Hyper-V PowerShell:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
Un altro cmdlet PowerShell utile è Get-VMNetworkAdapter, che consente di identificare gli adattatori di rete virtuali della macchina virtuale selezionata. Ad esempio, se si desidera trovare gli adattatori di rete virtuali di tutte le VM e del sistema operativo di gestione, è necessario eseguire il seguente comando Hyper-V PowerShell:
Get-VMNetworkAdapter –All
Se tutto è corretto, nella console PowerShell dovrebbero essere visualizzate le seguenti informazioni:
Utilizzando i comandi Hyper-V PowerShell, è possibile eseguire varie operazioni semplici e complesse con gli adattatori di rete Hyper-V. Consulta la nostra guida sui cmdlet che possono aiutarti a gestire e configurare gli adattatori di rete virtuali nel tuo ambiente Hyper-V.
Update-VMVersion
PowerShell dispone di un cmdlet che consente di aggiornare la versione della VM selezionata:
Update-VMVersion -Name 'TestVM'
Dopo aver eseguito il comando Hyper-V PowerShell, la VM denominata TestVM può essere aggiornata alla versione corrente della VM.
Get-Process
Questo comando Hyper-V PowerShell consente di visualizzare tutti i processi attualmente in esecuzione sul computer locale. Dopo aver eseguito il cmdlet Get-Process , sullo schermo vengono visualizzate le seguenti informazioni:
Questa tabella include informazioni su:
- il numero di handle aperti dal processo
- la quantità di memoria non paginata utilizzata dal processo
- la quantità di memoria paginabile utilizzata dal processo
- la dimensione del working set del processo
- la quantità di memoria virtuale utilizzata dal processo
- la quantità di tempo di elaborazione assegnata a tutti i processori
- l’ID del processo
- il nome del processo
Per restringere la ricerca e trovare un processo specifico, è necessario digitare il nome o l’ID del processo. Ad esempio, se si desidera sapere come è attivo/e attualmente Microsoft Word, è necessario esaminare l’elenco di tutti i processi in esecuzione e trovare la riga con le informazioni su Microsoft Word (ovvero WinWord), compreso il relativo ID di processo. Utilizzando l’ID di processo, è possibile eseguire il seguente cmdlet per ottenere i dati necessari:
Get-Process -ID 8892
Inoltre, i dati relativi ai processi WinWord correnti possono essere presentati in un altro formato, ovvero come elenco di proprietà. Eseguire questo cmdlet per ottenere un output più dettagliato:
Get-Process WINWORD | Format-List *
Dopo aver ottenuto i dati di processo, è possibile eseguire i seguenti cmdlet:
Stop-Processconsente di arrestare uno o più processi in esecuzione.Wait-Processconsente di attendere l’arresto di uno o più processi in esecuzione prima di abilitare qualsiasi altro input.Start-Processconsente di avviare uno o più processi sul computer locale.Debug-Processconsente di allegare un debugger a uno o più processi in esecuzione sul computer locale.
Ad esempio, se si desidera avviare l’applicazione Notepad Da PowerShell, è necessario eseguire il seguente cmdlet:
Start-Process -FilePath "notepad.exe"
Un altro esempio è quando si è aperto PowerShell in modalità “normale”, ma è necessario eseguire PowerShell in modalità elevata per ottenere l’accesso ai diritti amministrativi. In tal caso, eseguire il seguente comando Hyper-V PowerShell:
Start-Process -FilePath "powershell" -Verb RunAs
D’altra parte, se uno dei processi in esecuzione smette di rispondere, è possibile eseguire il cmdlet Stop-Process per arrestare l’applicazione che ha dato errore:
Stop-Process -Name "notepad"
In questo caso, tutte le istanze dell’applicazione Blocco note sul computer locale vengono arrestate.
Ogni istanza di Blocco note ha un proprio ID processo. Se si desidera arrestare una particolare istanza di Blocco note, è necessario utilizzare il parametro ID nel cmdlet Stop-Process. A tal fine, è necessario innanzitutto eseguire il cmdlet Get-Process cmdlet, individuare i processi attivi obbligatori e identificare l’ID del processo che si desidera arrestare.
Ad esempio, è possibile arrestare il processo Blocco note specifico identificando il relativo ID di processo ed eseguendo il seguente comando Hyper-V PowerShell:
Stop-Process -ID 5052
Di conseguenza, solo il processo Notepad selezionato viene arrestato.
Questi comandi PowerShell consentono di rilevare un processo che consuma risorse indesiderate e riduce le prestazioni di Hyper-V, al fine di terminare tale processo.
Where-Object
Questo comando Hyper-V PowerShell consente di filtrare gli oggetti della pipeline e trovare i dati esatti necessari. In questo caso, è necessario creare uno script PowerShell in cui specificare quali oggetti possono essere passati lungo la pipeline. Utilizzando vari parametri di ricerca, è possibile trovare qualsiasi oggetto sul computer locale.
Ad esempio, se si desidera individuare i processi che hanno smesso di funzionare, utilizzare questo cmdlet:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Un altro esempio di utilizzo del cmdlet Where-Object è quando si desidera trovare un cmdlet specifico. Il seguente comando Hyper-V PowerShell può aiutarti a trovare tutti i cmdlet che iniziano con Wait:
Get-Command | Where-Object {$_.Name -like '*wait*'}
Il prossimo Where-Object cmdlet può aiutarti a trovare un processo particolare basandoti solo sul suo nome. Eseguendo il comando seguente, puoi ottenere un elenco di tutti i processi i cui nomi iniziano con sys:
Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}
Come creare una VM Hyper-V utilizzando PowerShell
Una delle potenti funzioni integrate di Hyper-V è la possibilità di utilizzare PowerShell per le operazioni di gestione. Tra le molte cose che possiamo fare con PowerShell in Hyper-V c’è la creazione di VM. Diamo un’occhiata a una serie di comandi Hyper-V PowerShell per la creazione di nuove VM.
Comandi PowerShell per creare una nuova VM
Per creare una nuova VM di seconda generazione con un disco rigido VHDX da 60 GB nuovo di zecca e connetterla a uno specifico switch virtuale (in questo caso, “ExternalSwitch”), eseguire i seguenti comandi PowerShell sull’host Hyper-V.
-
Creazione di una VM:
new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch" -
Per aggiungere un’unità DVD insieme a un’immagine ISO da cui avviare il sistema, è possibile eseguire i seguenti comandi aggiuntivi:
Add-vmscsicontroller -vmname WSTESTAdd-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso -
Se desideriamo creare un disco di dimensioni fisse e collegarlo alla nostra VM, possiamo eseguire il seguente comando per creare un VHDX di dimensioni fisse e collegarlo alla nostra VM:
new-vhd -path "d:hyper-vvirtual hard disks.wstest.vhdx" -sizebytes 60GB -fixedadd-vmharddiskdrive -vmname WSTEST -path "d:hyper-vvirtual hard diskswstest.vhdx"
Conclusione
PowerShell può sembrare intimidatorio all’inizio, ma una volta imparato a utilizzarlo, potrete rilevare rapidamente come usare i comandi Hyper-V PowerShell e semplificare l’amministrazione nel vostro ambiente Hyper-V. Ricorda solo che, indipendentemente dallo strumento utilizzato per gestire le tue macchine virtuali, è necessario creare backup per evitare la perdita di dati e i tempi di inattività.
NAKIVO Backup & Replication è una soluzione di protezione dei dati affidabile e potente, che può aiutarti a proteggere gli ambienti VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows e Microsoft 365.


























