Rimozione del ruolo Hyper‑V in Windows Server 2019: guida completa con PowerShell, dipendenze e troubleshooting

Hai installato il ruolo Hyper‑V su Windows Server 2019 e ora l’opzione per rimuoverlo in Server Manager è disattivata? In questa guida pratica trovi cause, verifiche e procedure PowerShell sicure per disinstallare completamente Hyper‑V, pulire i residui e risolvere i casi più ostinati.

Indice

Scenario e sintomi

Dopo l’installazione del ruolo Hyper‑V, in Server Manager > Add Roles and Features la casella di Hyper‑V può apparire grigia e non modificabile anche se avvii Server Manager con privilegi amministrativi. Questo comportamento è quasi sempre legato a dipendenze attive, a componenti collegati (strumenti, Replica, Shielded VM, Containers) o a particolarità dell’ambiente (cluster, host con VBS/Credential Guard, gestione remota).

Cause comuni dell’opzione disattivata

  • Feature o ruoli dipendenti: strumenti di gestione Hyper‑V, PowerShell per Hyper‑V, componenti per Shielded VM, funzionalità di Replica o il ruolo Host Guardian Service in laboratorio.
  • Host in cluster: nodi che partecipano a un Failover Cluster con carichi Hyper‑V non consentono la rimozione “al volo”.
  • Servizi o VM in esecuzione: macchine virtuali o servizi Hyper‑V ancora attivi bloccano la disinstallazione.
  • Funzionalità di sicurezza basate su virtualizzazione (VBS, Credential Guard, HVCI): possono avviare il Windows Hypervisor anche senza il ruolo Hyper‑V, generando confusione post‑rimozione.
  • Gestione remota o edizione Server Core: l’interfaccia grafica presenta limitazioni e alcune modifiche devono passare da PowerShell.

Prerequisiti e controlli veloci

Prima di rimuovere Hyper‑V, verifica questi punti essenziali per ridurre rischi e tempi di fermo.

ControlloComando / AzioneEsito atteso
Backup e finestra di manutenzionePianifica un riavvio e aggiorna l’inventarioConfermata finestra per riavvio
VM spenteGet-VM deve mostrare tutte “Off”Nessuna VM in esecuzione
ClusterRimuovi ruoli di cluster e/o il nodoNodo in stato Paused o fuori cluster
DipendenzeGet-WindowsFeature HyperNessuna feature “Installed” necessaria a Hyper‑V
ReteAnnota virtual switch e bindingPiano di ripristino connettività

Verificare dipendenze e componenti collegati

Hyper‑V può essere richiesto da altri elementi. Prima di rimuoverlo, elimina le dipendenze che seguono, se presenti:

  • Strumenti di gestione Hyper‑V (GUI e PowerShell per Hyper‑V).
  • Componenti Shielded VM e laboratori con Host Guardian Service.
  • Replica Hyper‑V configurata tra host.
  • Containers con isolamento Hyper‑V o software che usa il Windows Hypervisor.

Comandi utili per l’inventario

# Elenco ruoli/feature legati a Hyper‑V
Get-WindowsFeature Hyper | Format-Table Name, DisplayName, InstallState -Auto

Elenco VM e stato operativo

Get-VM | Select-Object Name, State, Path

Verifica virtual switch

Get-VMSwitch | Format-Table Name, SwitchType, NetAdapterInterfaceDescription -Auto 

Rimozione affidabile con PowerShell

La rimozione lato server è più robusta e ripetibile tramite PowerShell con privilegi amministrativi. Ecco il percorso consigliato.

Arresto ordinato delle VM

# Spegne tutte le VM eventualmente attive
Get-VM | Where-Object {$_.State -ne 'Off'} | Stop-VM -Force

Facoltativo: arresta il servizio di gestione VMMS

Stop-Service -Name vmms -Force -ErrorAction SilentlyContinue 

Disinstallazione del ruolo Hyper‑V

Esegui il comando seguente. Disinstalla Hyper‑V e gli strumenti di gestione correlati; al termine verrà richiesto il riavvio.

Remove-WindowsFeature -Name Hyper-V -IncludeManagementTools

In alternativa, sui sistemi in cui è disponibile la nomenclatura più recente, puoi usare il comando equivalente:

Uninstall-WindowsFeature -Name Hyper-V -IncludeManagementTools

Per automatizzare il riavvio se richiesto, aggiungi -Restart:

Uninstall-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

Verifica post‑riavvio

# Controlla lo stato del ruolo
Get-WindowsFeature Hyper-V | Format-Table Name, InstallState

Controlla se l'hypervisor parte comunque (VBS/Credential Guard)

systeminfo | Select-String "Hyper-V Requirements"

Verifica impostazione di avvio dell'hypervisor

bcdedit /enum {current} | findstr /i hypervisorlaunchtype 

Perché altri comandi possono fallire

  • Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor agisce sulle funzionalità opzionali di Windows client; su Windows Server non rimuove il ruolo.
  • Remove-WindowsFeature/Uninstall-WindowsFeature è l’utilità corretta per aggiungere/rimuovere ruoli e feature lato server perché interagisce con il Server Manager e le relative dipendenze.

Alternative quando l’interfaccia è bloccata

Se desideri comunque procedere senza PowerShell (ad es. in ambienti rigidi), verifica che non ci siano dipendenze e poi usa Server Manager > Manage > Remove Roles and Features. Se l’opzione resta non disponibile, significa che una dipendenza o un vincolo ambientale la sta impedendo: rimuovili o passa a PowerShell.

Uso di DISM quando necessario

In scenari particolari (immagini offline, Server Core minimal, script legacy) puoi ricorrere a DISM. Prima individua i nomi esatti delle feature presenti sul tuo sistema:

# Individua i nomi delle feature Hyper‑V con DISM
dism /online /Get-Features /Format:Table | findstr /i hyper

Quindi disabilita la/le feature trovate (sostituisci <FeatureName> con il nome reale):

dism /online /Disable-Feature /FeatureName:&lt;FeatureName&gt; /NoRestart
shutdown /r /t 0

Nota: l’approccio con DISM è utile come ultima risorsa; quando possibile preferisci sempre Remove/Uninstall‑WindowsFeature.

Pulizia post‑rimozione

Rimuovere virtual switch non più necessari

# Elenco switch
Get-VMSwitch

Rimozione di uno switch specifico

Remove-VMSwitch -Name "vSwitch-Prod" -Force 

Se uno switch era legato all’unica scheda di gestione, valuta di riconfigurare l’IP prima della rimozione o di eseguire l’attività tramite console locale per evitare perdita di connettività.

Ripulire binding e adattatori virtuali

# Verifica binding dello switch estendibile di Hyper‑V
Get-NetAdapterBinding -ComponentID vms_pp | Format-Table Name, Enabled

Facoltativo: disabilita binding residui su una NIC

Disable-NetAdapterBinding -Name "Ethernet" -ComponentID vms_pp 

Gestire file di VM e dischi virtuali

# Individua dischi e configurazioni VM rimaste (senza cancellare)
Get-ChildItem -Path "D:\HyperV" -Recurse -Include .vhd,.vhdx,.avhdx,.vmcx,*.vmrs

Se sicuro, rimuovi le cartelle di lavoro

ATTENZIONE: azione distruttiva, verifica due volte il percorso

Remove-Item -Path "D:\HyperV*" -Recurse -Force

Verificare l’assenza dell’hypervisor all’avvio

Se dopo la rimozione systeminfo continua a indicare “A hypervisor has been detected…”, probabilmente il sistema sta ancora avviando il componente di virtualizzazione per funzioni VBS (Credential Guard/HVCI).

# Disabilita l'avvio dell'hypervisor (richiede riavvio)
bcdedit /set hypervisorlaunchtype off

Attenzione: disabilitare l’hypervisor potrebbe disattivare funzionalità di sicurezza basate su virtualizzazione (VBS, Credential Guard). Esegui questa scelta consapevolmente.

Casi speciali e come gestirli

Host membri di un cluster di Failover

  1. Metti in Pause il nodo e drena i ruoli (Live Migration dei carichi altrove).
  2. Rimuovi eventuali Cluster Roles di VM o il nodo dal cluster.
  3. Esegui la rimozione di Hyper‑V via PowerShell.
  4. Riavvia e poi reintegra il nodo nel cluster se necessario.

Server Core senza GUI

Usa esclusivamente PowerShell:

Get-WindowsFeature Hyper-V
Uninstall-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

Ambienti con Containers

Se hai usato Docker/Containers con isolamento Hyper‑V, il sistema può continuare ad avviare il Windows Hypervisor anche senza il ruolo Hyper‑V per supportare quell’isolamento. Rimuovi/riconfigura i componenti dei container o passa all’isolamento process prima di disinstallare Hyper‑V, se l’obiettivo è spegnere totalmente l’hypervisor.

Shielded VM e Host Guardian Service

Host configurati per eseguire Shielded VM richiedono componenti aggiuntivi. Rimuovi i laboratori HGS e i relativi agent/feature prima di tentare la disinstallazione.

VBS, Credential Guard e HVCI

Queste tecnologie sfruttano l’hypervisor. Anche senza il ruolo Hyper‑V, l’hypervisor può partire. Se l’obiettivo è solo eliminare il ruolo, lascia VBS attivo; se invece vuoi disattivare completamente la virtualizzazione, agisci sul bcdedit come mostrato sopra e rivedi i criteri di sicurezza.

Script di automazione pronto all’uso

Lo script seguente automatizza i controlli chiave, spegne le VM, rimuove Hyper‑V, effettua verifiche e propone il riavvio. Personalizzalo secondo le tue policy.

#requires -RunAsAdministrator
Write-Host "=== Rimozione guidata del ruolo Hyper‑V (Windows Server 2019) ===" -ForegroundColor Cyan

1) Inventario rapido

$hv = Get-WindowsFeature Hyper-V
if ($hv.InstallState -ne 'Installed') {
Write-Host "Hyper‑V non risulta installato. Uscita." -ForegroundColor Yellow
return
}

Write-Host "`nDipendenze installate:" -ForegroundColor Cyan
Get-WindowsFeature Hyper | Where-Object InstallState -eq 'Installed' |
Format-Table Name, DisplayName, InstallState -Auto

2) Stop VM

$running = Get-VM | Where-Object {$_.State -ne 'Off'}
if ($running) {
Write-Host "`nArresto VM in corso..." -ForegroundColor Cyan
$running | Stop-VM -Force -ErrorAction Continue
Start-Sleep -Seconds 5
}

3) Facoltativo: stop VMMS

Try { Stop-Service vmms -Force -ErrorAction Stop } Catch { }

4) Rimozione ruolo + strumenti

Write-Host "`nDisinstallazione del ruolo Hyper‑V..." -ForegroundColor Cyan
$op = Uninstall-WindowsFeature -Name Hyper-V -IncludeManagementTools -Verbose -ErrorAction Continue

5) Esito e riavvio

if ($op.Success -eq $true -and $op.RestartNeeded -ne 'No') {
Write-Host "`nE' richiesto un riavvio per completare la rimozione." -ForegroundColor Green
  $ans = Read-Host "Riavviare ora? (Y/N)"
  if ($ans -match '^[Yy]') { Restart-Computer -Force }
} else {
  Write-Host "`nOperazione completata. Verifica stato:" -ForegroundColor Green
Get-WindowsFeature Hyper-V | Format-Table Name, InstallState
} 

Diagnostica in caso di errore

  • File in uso: errori su file .vhdx/.vmcx indicano VM o processi che li tengono aperti. Chiudi console di gestione, antivirus/backup e riprova.
  • Eventi: consulta Event Viewer > Applications and Services Logs > Microsoft > Windows > Hyper‑V‑VMMS per dettagli.
  • Timeout dei servizi: arresta manualmente vmms come indicato sopra e rilancia il comando.
  • Blocchi da policy: criteri di sicurezza o baseline possono reinstallare componenti. Disattiva temporaneamente le policy o escludi Hyper‑V dal configuration management durante la rimozione.
  • Cluster: verifica che il nodo sia in Pause e senza ruoli assegnati.

Ottimizzazioni e best practice

  • Documenta posizioni di storage, switch, VLAN e mapping delle NIC prima della rimozione.
  • Usa parametri espliciti come -IncludeManagementTools per disinstallare strumenti/console insieme al ruolo.
  • Automatizza su più server con PowerShell Remoting (Invoke-Command) e controlli idempotenti (Get-WindowsFeature).
  • Valuta la sicurezza: se intendi disattivare l’hypervisor, verifica impatti su VBS/ Credential Guard e compliance.

Quando reinstallare Hyper‑V

Se prevedi di reinstallare Hyper‑V in futuro, verifica in anticipo che la virtualizzazione hardware sia attiva nel BIOS/UEFI (Intel VT‑x/AMD‑V) e che il server supporti SLAT. Un rapido controllo:

systeminfo | Select-String "Hyper-V Requirements"

Riepilogo operativo

La rimozione del ruolo Hyper‑V in Windows Server 2019 è affidabile e ripetibile via PowerShell usando Remove‑WindowsFeature/Uninstall‑WindowsFeature. Prima elimina le dipendenze, spegni le VM, quindi disinstalla e riavvia. Dopo il riavvio, ripulisci switch e file residui; se necessario, disabilita l’avvio dell’hypervisor.


Procedura rapida

  1. Verifica dipendenze e spegni le VM.
  2. Esegui come amministratore: Remove-WindowsFeature -Name Hyper-V -IncludeManagementTools
  3. Accetta il riavvio per completare la rimozione.
  4. Pulisci switch e file non più necessari.

In sintesi: la rimozione di Hyper‑V in Windows Server 2019 avviene in modo affidabile tramite PowerShell con Remove‑WindowsFeature, dopo aver risolto eventuali dipendenze e seguito un riavvio del sistema.

Indice