La gestione degli ambienti Hyper-V può essere un compito impegnativo. Pertanto, hai bisogno di uno strumento di gestione potente per configurare e controllare la tua infrastruttura virtuale da un unico pannello di controllo. Oltre all’interfaccia grafica utente, Hyper-V fornisce un’interfaccia della riga di comando utilizzando PowerShell per la gestione di Hyper-V.
In questo post del blog, descriviamo come funziona PowerShell, quali comandi PowerShell di Hyper-V possono migliorare le prestazioni della macchina virtuale (VM) e come questo strumento della riga di comando 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 un guscio della riga di comando e un linguaggio di scripting associato costruito sul .NET Framework e .NET Core.
I comandi di PowerShell, noti anche come cmdlet, possono essere utilizzati per automatizzare varie attività combinando diversi cmdlet in un singolo script di PowerShell. Microsoft ha sviluppato più di cento cmdlet core che possono essere utilizzati per eseguire compiti complessi e di base.
Cosa può fare PowerShell?
PowerShell può aiutare gli amministratori di Hyper-V a automatizzare rapidamente le attività che gestiscono i sistemi operativi (Linux, macOS e Windows) e i relativi processi. A differenza degli strumenti GUI, PowerShell ti consente di gestire l’intero sistema utilizzando solo la riga di comando.
Inoltre, puoi salvare i comandi di PowerShell di Hyper-V richiesti in un file di testo (con estensione .ps1) ed eseguire questo script per eseguire determinate attività. Inoltre, puoi programmare gli script di PowerShell per essere eseguiti in un momento prestabilito utilizzando il Task Scheduler.
Come aprire PowerShell
Ci sono un paio di modi per eseguire PowerShell in Hyper-V. Un modo facile per accedere a PowerShell è connettersi direttamente a un server Hyper-V e lanciarlo da lì. Per connettersi in remoto a un host Hyper-V, è necessario assicurarsi che il Desktop remoto sia abilitato. Una volta abilitato il Desktop remoto, è possibile utilizzare l’utilità Desktop remoto e connettersi in remoto al server come si farebbe con qualsiasi interfaccia utente grafica di Windows Server.
Apertura di PowerShell dall’interfaccia grafica
Per aprire PowerShell in un sistema operativo basato su GUI, seguire questi passaggi:
- È necessario fare clic su Start e digitare PowerShell nella barra di ricerca.
- Fare clic con il pulsante destro sull’icona di PowerShell e selezionare Esegui come amministratore per aprire PowerShell in modalità elevata.
Apertura di PowerShell dalla riga di comando
Per eseguire PowerShell se si sta eseguendo Windows Server Core o Hyper-V Server, seguire questi passaggi:
- Digitare PowerShell nel Prompt dei comandi e premere Invio.
- A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
- Una volta in PowerShell, è possibile utilizzare i comandi PowerShell specifici di Hyper-V, di cui parleremo più avanti in questo post.
Impostazioni remote
Per controllare 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 nella riga di comando.
Una volta lì, ti trovi in un ambiente cmd.exe normale – non PowerShell. Per avviare un ambiente PowerShell, basta digitare powershell sulla riga di comando.
PowerShell remoto
Usando PowerShell, puoi anche interagire remotamente con Hyper-V. In altre parole, puoi eseguire comandi PowerShell in remoto sull’host Hyper-V senza stabilire una connessione Desktop remota.
Dalla postazione di amministrazione su cui abbiamo caricato gli strumenti di gestione di Hyper-V, possiamo eseguire i nostri comandi Hyper-V. Prima, dobbiamo installare gli strumenti di Hyper-V, inclusi questi comandi (cmdlets).
Install-WindowsFeature RSAT-Hyper-V-Tools
Una volta caricati gli strumenti, possiamo 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 cmdlet get-vm di PowerShell.
12 Comandi Hyper-V PowerShell Essenziali
Esistono diversi comandi Hyper-V PowerShell efficaci che possono semplificare il processo di gestione di Hyper-V. Vediamo come puoi utilizzare diversi comandi Hyper-V PowerShell.
Get-Command
Iniziamo con un comando Hyper-V PowerShell utile per gli utenti nuovi di PowerShell che non conoscono quali cmdlet dovrebbero essere utilizzati e come. Eseguendo il cmdlet Get-Command, puoi vedere l’elenco completo di tutti i cmdlet disponibili (comandi di Windows PowerShell), funzioni e alias installati sul computer.
Tuttavia, se desideri restringere la tua ricerca e ottenere l’elenco dei comandi PowerShell Hyper-V che corrispondono a criteri specifici, puoi utilizzare il cmdlet Get-Command *-VM per trovare l’elenco dei comandi che ti consentono di controllare e configurare le VM.
Cambiando il parametro VM in VHD, puoi ottenere l’elenco completo dei cmdlet utilizzati per gestire i dischi rigidi virtuali. Pertanto, puoi provare vari parametri di ricerca per ottenere i risultati desiderati.
Get-Help
Una volta deciso quale comando PowerShell Hyper-V desideri utilizzare, puoi saperne di più su quel cmdlet. A tale scopo, puoi utilizzare il cmdlet Get-Help. Ad esempio, per saperne di più sul cmdlet Get-VM, digita 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, esegui il cmdlet PowerShell Get-VM.
Sullo schermo di PowerShell, è possibile visualizzare l’elenco delle VM disponibili, inclusi il loro nome, stato, utilizzo della CPU, memoria assegnata, tempo di attività, stato e versione.
Start-VM
Questo particolare cmdlet PowerShell start VM ti aiuta a avviare una VM. A tale scopo, esegui il seguente comando PowerShell Hyper-V:
Start-VM -Name 'Windows Server 2016'
Come risultato, la VM chiamata Windows Server 2016 viene avviata sul tuo host Hyper-V locale. Verifichiamo se la VM è effettivamente stata avviata eseguendo il cmdlet Get-VM.
Puoi utilizzare una versione modificata del cmdlet Start-VM per avviare le VM solo se i loro nomi iniziano con Hyper-V:
Start-VM -Name Hyper-V*
Come puoi vedere, la VM denominata Hyper-V Server Desktop è stata avviata con successo. Tuttavia, un’altra VM (Hyper-V Server 2012) è già stata avviata e PowerShell ti notifica di questo.
Stop-VM
Il cmdlet Stop-VM ti consente di arrestare o spegnere una VM. A tale scopo, puoi eseguire il seguente cmdlet:
Stop-VM -Name 'Windows Server 2016'
Come puoi vedere, la VM selezionata è stata arrestata con successo tramite il sistema operativo guest.
Un altro esempio è quello di spegnere le VM i cui nomi iniziano con Hyper-V:
Stop-VM -Name Hyper-V* -TurnOff
Se scopri che la tua VM non risponde, puoi forzarne lo spegnimento. Per farlo, esegui il seguente cmdlet di PowerShell:
Stop-VM -Name 'Windows Server 2016' -Force
Nota che lo spegnimento forzato è simile a staccare l’alimentazione su una macchina fisica, il che può comportare la perdita di dati delle applicazioni non salvati. In questo caso, è consigliabile salvare la VM per evitare potenziali perdite di dati. A tale scopo, è necessario eseguire il cmdlet Save-VM, che è equivalente all’ibernazione di un computer fisico:
Save-VM -Name 'Windows Server 2016'
Se desideri salvare le VM i cui nomi iniziano con Hyper-V, esegui il seguente comando PowerShell di Hyper-V:
Get-VM -Name Hyper-V* | Save-VM
Checkpoint-VM
Il cmdlet Checkpoint-VM ti aiuta a creare un checkpoint VM Hyper-V (noto anche come snapshot Hyper-V). Esegui il seguente cmdlet per creare un checkpoint denominato Update1 della VM specifica (Windows Server 2016):
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1
Per verificare che la VM sia stata creata con successo, utilizza il seguente comando PowerShell di Hyper-V:
Get-VMSnapshot -VMName 'Windows Server 2016'
D’altro canto, se desideri eliminare determinati snapshot Hyper-V, puoi utilizzare il cmdlet Remove-VMSnapshot. Ad esempio, se desideri eliminare tutti i snapshot VM il cui nome inizia con Testing, dovresti eseguire il seguente cmdlet:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*
La schermata sopra dimostra l’intero processo di eliminazione dei snapshot Hyper-V selezionati.
Test-VHD
Questo comando PowerShell di Hyper-V è destinato a verificare che il file del disco rigido virtuale esista effettivamente e possa essere utilizzato per la distribuzione di Hyper-V. Questo cmdlet è il seguente:
Test-VHD -Path C:\Testing.vhd
Nel caso in cui il percorso VHD sia valido, vedresti il seguente output sul tuo schermo:
Per apprendere maggiori informazioni sulla gestione dei dischi rigidi virtuali utilizzando i cmdlet di PowerShell, ti consigliamo di leggere il nostro post sul basi del lavoro con file VHD e VHDX di Hyper-V.
Measure-VM
Questo comando di PowerShell di Hyper-V consente di raccogliere i dati sull’utilizzo delle risorse per una VM specifica. Ad esempio, esegui il seguente cmdlet per conoscere l’utilizzo della CPU, l’utilizzo della RAM, la capacità del disco e il traffico di rete per la VM denominata Windows Server 2016:
Measure-VM -VMName 'Windows Server 2016'
Si noti che il Measure-VM il cmdlet può segnalare i dati richiesti solo dopo aver abilitato il conteggio delle risorse sulla VM. Per abilitare il conteggio delle risorse, utilizzare il seguente cmdlet di PowerShell di Hyper-V:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Get-VMNetworkAdapter
Un altro cmdlet utile è Get-VMNetworkAdapter, che consente di identificare gli adattatori di rete virtuali della VM selezionata. Ad esempio, se si desidera trovare gli adattatori di rete virtuali da tutte le VM oltre al sistema operativo di gestione, è necessario eseguire il seguente comando di PowerShell di Hyper-V:
Get-VMNetworkAdapter –All
Se tutto è corretto, dovresti vedere le seguenti informazioni nel tuo shell di PowerShell:
Utilizzando i comandi PowerShell di Hyper-V, è possibile eseguire varie attività semplici e complesse con gli adattatori di rete di Hyper-V. Consulta la nostra guida sui cmdlet che possono aiutare gestire e configurare gli adattatori di rete virtuali nel tuo ambiente Hyper-V.
Update-VMVersion
PowerShell ha un cmdlet che consente di aggiornare la versione della VM selezionata:
Update-VMVersion -Name 'TestVM'
Dopo aver eseguito il comando PowerShell di Hyper-V, la VM denominata TestVM può essere aggiornata all’attuale versione della VM.
Get-Process
Questo comando PowerShell di Hyper-V può aiutarti a visualizzare tutti i processi attuali sul tuo computer locale. Dopo aver eseguito il cmdlet Get-Process, è possibile ottenere le seguenti informazioni sullo schermo:
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 paginata utilizzata dal processo
- la dimensione del set di lavoro del processo
- la quantità di memoria virtuale utilizzata dal processo
- la quantità di tempo di processore allocata a tutti i processori
- l’ID del processo
- il nome del processo
Per restringere la ricerca e trovare un processo specifico, devi digitare il nome o l’ID del processo. Ad esempio, se vuoi sapere come funziona attualmente Microsoft Word, devi cercare nell’elenco di tutti i processi in esecuzione e trovare la riga con le informazioni su Microsoft Word (cioè, WinWord), inclusa la sua identificazione del processo. Utilizzando l’ID del processo, puoi eseguire il seguente cmdlet per ottenere i dati necessari:
Get-Process -ID 8892
Inoltre, i dati sui processi WinWord attuali possono essere presentati in un altro formato, ovvero come elenco di proprietà. Esegui questo cmdlet per ottenere un output più dettagliato:
Get-Process WINWORD | Format-List *
Dopo aver ottenuto i dati del processo, puoi eseguire i seguenti cmdlet:
Stop-Process
ti consente di fermare uno o più processi in esecuzione.Wait-Process
ti consente di attendere che uno o più processi in esecuzione vengano fermati prima di abilitare qualsiasi altro input.Start-Process
ti consente di avviare uno o più processi sul computer locale.Debug-Process
ti consente di collegare un debugger a uno o più processi in esecuzione sul computer locale.
Ad esempio, se vuoi avviare l’applicazione Notepad da PowerShell, devi eseguire il seguente cmdlet:
Start-Process -FilePath "notepad.exe"
Un altro esempio è quando hai aperto PowerShell in modalità “normale”, ma hai bisogno di eseguire PowerShell in modalità elevata per ottenere l’accesso ai diritti amministrativi. In tal caso, esegui il seguente comando PowerShell Hyper-V:
Start-Process -FilePath "powershell" -Verb RunAs
D’altra parte, se uno dei processi in esecuzione smette di rispondere, puoi eseguire il cmdlet Stop-Process per interrompere l’applicazione fallita:
Stop-Process -Name "notepad"
In questo caso, tutte le istanze dell’applicazione Notepad sul computer locale vengono interrotte.
Ogni istanza di Notepad ha il proprio ID processo. Se desideri interrompere una particolare istanza di Notepad, dovresti utilizzare il parametro ID nel cmdlet Stop-Process. A questo scopo, devi prima eseguire il cmdlet Get-Process, trovare i processi attivi richiesti e identificare l’ID processo che desideri interrompere.
Ad esempio, puoi interrompere il processo Notepad specifico identificando il suo ID processo ed eseguendo il seguente comando PowerShell Hyper-V:
Stop-Process -ID 5052
Come risultato, solo il processo Notepad selezionato viene interrotto.
Questi comandi PowerShell ti consentono di individuare un processo che sta consumando risorse indesiderate e riducendo le prestazioni di Hyper-V per terminare questo processo.
Where-Object
Questo comando PowerShell Hyper-V ti consente di filtrare gli oggetti della pipeline e trovare esattamente i dati di cui hai bisogno. In questo caso, devi creare uno script PowerShell in cui specificare quali oggetti possono essere passati lungo la pipeline. Utilizzando vari criteri di ricerca, puoi trovare qualsiasi oggetto sul computer locale.
Ad esempio, se vuoi individuare i processi che si sono fermati, utilizza questo cmdlet:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Un altro esempio di utilizzo del cmdlet Where-Object è quando desideri trovare un cmdlet specifico. Il seguente comando PowerShell Hyper-V può aiutarti a trovare tutti i cmdlet che iniziano con Wait:
Get-Command | Where-Object {$_.Name -like '*wait*'}
Il prossimo cmdlet Where-Object può aiutarti a trovare un particolare processo basato 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 funzionalità integrate di Hyper-V è consentire l’uso di PowerShell per le operazioni di gestione. Tra le molte cose che possiamo fare con PowerShell in Hyper-V c’è la creazione di macchine virtuali. Vediamo un insieme di comandi PowerShell Hyper-V per la creazione di nuove VM.
Comandi PowerShell per creare una nuova VM
Per creare una nuova VM di Generazione 2 con un nuovo disco rigido VHDX da 60 GB e collegarla a uno specifico commutatore 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-v\dischi rigidi virtuali\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"
-
Per aggiungere un’unità DVD insieme a un’immagine ISO da avviare, possiamo eseguire comandi aggiuntivi:
Add-vmscsicontroller -vmname WSTEST
Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\mia.iso
-
Se vogliamo creare un disco di dimensioni fisse e allegarlo alla nostra VM, possiamo eseguire quanto segue per creare un VHDX di dimensioni fisse e allegarlo alla nostra VM:
new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed
add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"
Conclusione
PowerShell potrebbe sembrare intimidatorio all’inizio, ma una volta imparato a lavorarci, puoi rapidamente scoprire come utilizzare i comandi di PowerShell di Hyper-V e ottimizzare l’amministrazione nel tuo ambiente Hyper-V. Ricorda solo che qualunque cosa tu utilizzi per gestire le tue VM, devi creare dei backup per evitare la perdita di dati e i tempi di inattività.
NAKIVO Backup & Replication è una soluzione affidabile e potente per la protezione dei dati, che può aiutarti a proteggere gli ambienti VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows e Microsoft 365.
Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/