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.

NAKIVO for Hyper-V Backup

NAKIVO for Hyper-V Backup

Agentless, application-aware backups for Hyper-V. Anti-ransomware protection, instant VM boot from backup, other virtual/physical platform support and more.

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:

  1. È necessario fare clic su Avviare e digitare PowerShell nella barra di ricerca.
  2. Fare clic con il pulsante destro del mouse sull’icona PowerShell e selezionare Esegui come amministratore per aprire PowerShell in modalità elevata.

How to run PowerShell in Windows

Apertura di PowerShell da riga di comando

Per eseguire PowerShell se si utilizza Windows Server Core o Hyper-V Server, attenersi alla procedura seguente:

  1. Digitare PowerShell nel prompt dei comandi e premere Immettere.
  2. 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.
  3. Una volta in PowerShell, è possibile utilizzare i comandi PowerShell specifici di Hyper-V, che tratteremo più avanti in questo post.

How to run PowerShell in Windows command prompt

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.

Enabling Remote desktop to run PowerShell commands on a Hyper-V host

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.

Running PowerShell commands

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

Running PowerShell Hyper-V commands remotely

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.

The Get-VM PowerShell cmdlet

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.

Using the Get-Command PowerShell cmdlet

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.

Using the Get-Command cmdlet to display commands to work with VHD

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

Using the Get-Help and Get-VM Hyper-V PowerShell commands

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 .

PowerShell Get-VM details

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.

How to use the start VM PowerShell 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*

PowerShell start VM

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'

Using Stop-VM and Get-VM PowerShell commands

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

Using the Stop-VM and Get-VM PowerShell Hyper-V commands

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

Using the Save-VM and Get-VM PowerShell commands for Hyper-V

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'

Using the Hyper-V PowerShell commands to create a VM snapshot (checkpoint)

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*

Windows PowerShell commands to delete snapshots for a Hyper-V VM

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:

An example of using the Test-VHD command

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'

PowerShell get VM information

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:

PowerShell get VM information about network adapters

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.

How to update VM Version in PowerShell

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:

Viewing running processes on a Hyper-V host

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

Viewing the ID of the running process on a Hyper-V host

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 *

Viewing the details about the process on a Hyper-V host in PowerShell

Dopo aver ottenuto i dati di processo, è possibile eseguire i seguenti cmdlet:

  • Stop-Process consente di arrestare uno o più processi in esecuzione.
  • Wait-Process consente di attendere l’arresto di uno o più processi in esecuzione prima di abilitare qualsiasi altro input.
  • Start-Process consente di avviare uno o più processi sul computer locale.
  • Debug-Process consente 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

How to run PowerShell commands in the elevated mode

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.

Stopping the needed process in PowerShell

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*'}

An example of using the Where-Object cmdlet in PowerShell

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.*"}

How to find the process based only on its name

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.

  1. Creazione di una VM:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:hyper-vvirtualhard disksWSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. Per aggiungere un’unità DVD insieme a un’immagine ISO da cui avviare il sistema, è possibile eseguire i seguenti comandi aggiuntivi:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:ISOmy.iso

  3. 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 -fixed

    add-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.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Le persone leggono anche