Wenn man eine Virtuelle Maschine (VM) im Hyper-V-Manager oder per PowerShell löscht, dann entfernt Hyper-V diese aus seiner Konfiguration, lässt die zugehörigen virtuellen Festplatten aber im Dateisystem. Das ist praktisch, falls man eine solche VM später noch einmal verwenden möchte, denn ihre Daten und der wichtigste Teil ihrer Konfiguration (nämlich das VM-Betriebssystem) bleiben so erhalten.
In manchen Situationen ist es aber hinderlich, dass die “äußere” Konfiguration der VM beim Löschen verschwindet. Dazu gehören die virtuellen CPUs, die RAM-Konfiguration und die virtuellen Netzwerkkarten, aber auch die eindeutige ID der VM. Zwar kann man diese “VM-Hülle” meist recht schnell neu erzeugen, aber auch das hat Nachteile. So entstehen dabei etwa neue virtuelle Netzwerkkarten, die das vorhandene VM-Betriebssystem neu einrichtet, wodurch die vorhandene IP-Konfiguration unwirksam wird.
Eine Abhilfe bestünde darin, eine solche VM vor dem Löschen zu exportieren. Den so erzeugten Export kann man später wieder importieren oder schlicht registrieren. Dadurch arbeitet die betreffende VM wieder wie vorher. Der Nachteil: Das ist ein wenig umständlich, außerdem ändern sich dadurch evtl. Speicherpfade.
Während man also eine vorhandene VM (die z.B. einfach komplett im Host-Dateisystem kopiert wurde) einfach registrieren kann, fehlt das Gegenstück, das “Ent-Registrieren”. Hier hilft ein kleines PowerShell-Skript, das die Konfigurationsdaten der VM vor dem Löschen sichert und sie danach wieder in den vorgesehenen Ordner zurück kopiert.
$VMName = Read-Host 'Enter VM name' # get VM data $VMData = Get-VM $VMName -ErrorAction SilentlyContinue if (!$VMData) { "VM $VMName not found." Return } # get config folder $VMConfLoc = $VMData.ConfigurationLocation # save VM metadata $VMBackupLoc = $VMConfLoc + '\_VMConf\' Copy-Item -Path ($VMConfLoc + '\Virtual Machines') -Destination $VMBackupLoc -Recurse # remove the VM Remove-VM -Name $VMName -Force # restore VM metadata Copy-Item -Path ($VMBackupLoc + '*') -Destination ($VMConfLoc + '\Virtual Machines') -Recurse # remove the backup folder Remove-Item $VMBackupLoc -Recurse "$VMName successfully unregistered." "Find its configuration data at $VMConfLoc"
Hier der Download:
Unregister-VM.ps1 (480 bytes, 1.314-mal heruntergeladen, letzte Änderung am 20. Dezember 2019)
http://faq-o-matic.net/?p=8475