# Gestione VM Hyper-V

### 🖥️ Gestione VM Hyper-V

🎨 Guida passo-passo per configurare e gestire macchine virtuali Hyper-V

💡 L’obiettivo: avere un ambiente pronto per import/export VM e gestione dischi senza errori

Questa guida è pensata per sviluppatori e amministratori di sistema che necessitano di un ambiente Hyper-V organizzato e efficiente per la gestione delle macchine virtuali.

### 0️⃣ Installazione e Rimozione di Hyper-V

Prima di iniziare, è fondamentale avere un’installazione pulita di Hyper-V.

#### Installazione di Hyper-V (se non presente)

1. Apri PowerShell come Amministratore.
2. Esegui il comando seguente per installare tutti i componenti di Hyper-V:

       Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All -NoRestart

3. Al termine, riavvia il computer per completare l’installazione.

#### Rimozione di versioni precedenti o corrotte (Opzionale)

Se sospetti un’installazione problematica, puoi eseguire una pulizia completa.

1. Apri PowerShell come Amministratore.
2. Esegui il comando per disabilitare e rimuovere tutte le funzionalità di Hyper-V:

       Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -NoRestart

:::danger Attenzione
Questo comando rimuove tutti i componenti di Hyper-V. Sarà necessario un riavvio per completare la disinstallazione.

### 1️⃣ Requisiti Software

Per seguire questa guida è necessario avere un ambiente PowerShell moderno e correttamente configurato.

:::info Prerequisito
Se non hai ancora installato e configurato PowerShell 7, segui prima la nostra guida dedicata.

➡️ Guida alla Configurazione dell’Ambiente PowerShell

- Script `VmManage.ps1`
  Questo strumento facilita le operazioni di import ed export.
  - Percorso di rete: `\\tecnopack.local\sviluppo\Virtuale_Machines\Virtual_Machine-Hyper-V\VMScript\VmManage.ps1`

### 2️⃣ Configurazione dei Commutatori Virtuali (Virtual Switch)

I commutatori virtuali sono essenziali per connettere le VM alla rete.

#### Rimozione sicura dei Virtual Switch esistenti

Per evitare conflitti, è consigliabile rimuovere le configurazioni precedenti.

1. Apri PowerShell come Amministratore.
2. Elenca gli switch esistenti per verificarli:
   `powershell Get-VMSwitch`
3. Assicurati che tutte le VM siano spente.
4. Rimuovi tutti gli switch con un singolo comando:

       Get-VMSwitch | Remove-VMSwitch -Force

#### Creazione dei nuovi Commutatori

1. Apri Gestione Hyper-V dal menu Start.
2. Nel pannello Azioni a destra, clicca su Gestione commutatori virtuali….

- Commutatore 1: Wifi

  - Tipo: Esterno
  - Scheda di rete: Seleziona la tua scheda di rete Wi-Fi.
  - Scopo: Permette alle VM di connettersi tramite la rete wireless.
    <img src=“/img/screenshots/hyperv/switch_wifi.jpg” alt=“Configurazione Commutatore Wifi” style={{ maxWidth: ‘60%’, borderRadius: ‘8px’ }} />

- Commutatore 2: LAN

  - Tipo: Esterno
  - Scheda di rete: Seleziona la tua scheda di rete cablata (Ethernet).
  - Scopo: Permette alle VM di connettersi tramite la rete cablata.
    <img src=“/img/screenshots/hyperv/switch_lan.jpg” alt=“Configurazione Commutatore LAN” style={{ maxWidth: ‘60%’, borderRadius: ‘8px’ }} />

### 3️⃣ Impostazioni dei Percorsi di Hyper-V

Una corretta organizzazione dei file previene problemi futuri. Imposta questi percorsi prima di creare o importare VM.

- Dischi rigidi virtuali: `D:\VMs`
- Macchine virtuali: `D:\VMs`

:::tip
Usare una cartella radice unica come `D:\VMs` per dischi e configurazioni semplifica il backup e la gestione. Hyper-V creerà automaticamente sottocartelle con i nomi delle VM.

### 4️⃣ 🚀 Utilizzo dello script `VmManage.ps1`

Questo script automatizza le operazioni di esportazione e importazione.

#### 4.1 Preparazione

1. Copia l’intera cartella `VMScript` in una directory locale (es. `Documenti`).
2. Apri PowerShell 7 come Amministratore.
3. Naviga nella cartella dove hai copiato lo script:

       cd ~\Documenti\VMScript

#### 4.2 Abilitazione ed Esecuzione dello Script

Per motivi di sicurezza, PowerShell blocca l’esecuzione di script di default. Per abilitare l’esecuzione solo per la sessione corrente, esegui questo comando:

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

:::info Nota
Questo comando imposta il criterio di esecuzione solo per la finestra di PowerShell corrente. Una volta chiusa, la policy tornerà al suo valore predefinito. È una pratica sicura per eseguire script attendibili.

Ora, esegui lo script:

    .\VmManage.ps1

Lo script mostrerà un menu interattivo per scegliere l’operazione.
<img src=“/img/screenshots/hyperv/Script1.jpg” alt=“Menu principale dello script” style={{ maxWidth: ‘70%’, borderRadius: ‘8px’ }} />

Export (E): Spegne la VM, ne crea una copia in una cartella con timestamp (es. VM_Export_2023-10-27_10-30-00), e la riavvia. Ideale per creare backup sicuri.
<img src=“/img/screenshots/hyperv/ScriptE.jpg” alt=“Processo di Esportazione” style={{ maxWidth: ‘70%’, borderRadius: ‘8px’ }} />

Import (I): Ti guida nell’importazione di una VM, chiedendoti un nuovo nome e la cartella di destinazione. Controlla lo spazio su disco prima di iniziare.
<img src=“/img/screenshots/hyperv/ScriptI.jpg” alt=“Processo di Importazione” style={{ maxWidth: ‘70%’, borderRadius: ‘8px’ }} />

4.3 Note Pratiche
✅ Esegui sempre PowerShell come Amministratore.

✅ Mantieni i percorsi delle VM organizzati come configurato al punto 3.

✅ Scegli nomi chiari e descrittivi per le VM importate.

🔗 Risorse Utili
Documentazione ufficiale Hyper-V di Microsoft: Per approfondimenti e risoluzione di problemi.