Page 1 of 1

Importare una VM da un Hyper-V ad un altro Hyper-V

Posted: 26 Jul 2025, 21:54
by daniele
Ipotesi: la vm si chiama "WINSERVER"
I dischi sono in V:\Dischi-Hyper-V
la configurazione è in I dischi sono in V:\Config-Hyper-V
Il virtual switch si chiama vSwitch10G

1) Cerco l'ID della VM di origine con

Code: Select all

get-vm -name "WINSERVER"|select-object id
2) copio i 3 files con l'id della VM da V:\Config-Hyper-V\VirtualMachines
(non serve la directory vuota con che si chiama come l'id della VM, solo i 3 files)

3) copio tutti i dischi virtuali nella posizione di destinazione

4) eseguo il comando preliminare di import che darà errore perchè la posizione dei dischi e il nome del virtual switch è sbatliago:
ad esempio:

Code: Select all

Import-VM -Path "V:\Config-Hyper-V\Virtual Machines\d523d62c-7cab-4564-9a9f-f35e114c64a9.vmcx" -Register
5) se dà errori (vedi sopra)

# 1. Genera il report di incompatibilità

Code: Select all

$report = Compare-VM `
  -Path "V:\Config-Hyper-V\Virtual Machines\93E44F37-53D5-46EF-9D35-CED4F1483C9B.vmcx"
# 2. Ripara il virtual switch rimappando al tuo vSwitch10G

Code: Select all

$report.Incompatibilities `
  | Where-Object MessageId -EQ 33012 `
  | ForEach-Object {
      $_.Source `
        | Connect-VMNetworkAdapter -SwitchName "vSwitch10G"
    }
# 3. Ripara i dischi mancanti rimappandoli alla cartella V:\Dischi-Hyper-V

Code: Select all

$hdErrors = $report.Incompatibilities | Where-Object MessageId -EQ 40010

foreach($err in $hdErrors) {
    $hdd = $err.Source
    $newPath = "V:\Dischi-Hyper-V\" + [IO.Path]::GetFileName($hdd.Path)
    $hdd | Set-VMHardDiskDrive -Path $newPath
}
# (Facoltativo) Rilancia il controllo per sicurezza

Code: Select all

Compare-VM -CompatibilityReport $report | Select-Object -Expand Incompatibilities
# 4. Importa la VM usando solo il report corretto

Code: Select all

Import-VM -CompatibilityReport $report

6) Se è una Vm Windows controllare lo status della attivazione (ovviamente a macchina avviata)

Code: Select all

cscript //nologo %windir%\system32\slmgr.vbs /xpr
# Dice se Windows è permanentemente attivato o no


oppure

Code: Select all

cscript //nologo %windir%\system32\slmgr.vbs /dlv
# Mostra dettagli estesi (ID installazione, attivazione KMS, fine periodo grace, ecc.)


se si vuole:

Code: Select all

cscript //nologo %windir%\system32\slmgr.vbs /dli
# Mostra info base di licenza (License status, Partial Product Key, ecc.)