Logo faq-o-matic.net
Logo faq-o-matic.net

Hyper-V: Die Konfigurationsdatei einer VM finden

von veröffentlicht am30. Januar 2017, 06:35 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: PowerShell, Virtualisierung   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Hyper-V speichert die Konfiguration einer VM in einer Datei, die das System manchmal auch schlicht als “Virtueller Computer” bezeichnet. Bis Windows Server 2012 R2 handelte es sich dabei um eine XML-Datei, ab Windows Server 2016 ist es eine Binärdatei mit der Erweiterung VMCX.

Leider ist es nicht ganz einfach, den Speicherort dieser Datei ausfindig zu machen, denn in der grafischen Oberfläche zeigt Hyper-V ihn nirgends an. Wenn man beim Erzeugen der VM nicht aufmerksam ist, liegt sie u.U. an einem Ort, der nicht ganz offensichtlich ist. Wer etwa die Grundeinstellung von Hyper-V übernommen hat und beim Erzeugen einer VM nichts anderes angibt, speichert die VM-Konfigurationen unter C:\ProgramData\Microsoft\Windows\Hyper-V – schlauerweise kommt man an den Ordner nicht ohne Weiteres mit dem Explorer ran, weil dieser mit den Berechtigungen dort nicht umgehen kann.

Ein älterer Artikel beschreibt die Logik, nach der Hyper-V seine Dateien ablegt, sehr umfassend und (bis auf die Dateinamenerweiterungen) auch weiterhin zutreffend:

[Understanding where your virtual machine files are [Hyper-V] | Ben Armstrong’s Virtualization Blog]
https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/03/10/understanding-where-your-virtual-machine-files-are-hyper-v/

Tatsächlich gibt es eine relativ einfache Möglichkeit, die Konfigurationsdatei zu finden – aber nur in der PowerShell. Dort ist der Ordnerpfad über das Cmdlet Get-VM im Attribut ConfigurationLocation zu finden. Der eigentliche Dateiname entspricht dann der GUID der VM plus Erweiterung.

Äh – sagte ich “relativ einfach”? Smiley mit geöffnetem Mund

Das folgende PowerShell-Skript zeigt den vollen Pfad an, wenn man ihm den Namen der VM gibt. Man führt das Skript direkt auf dem Host aus.

$VMName = Read-Host 'Enter VM name'
# get VM data
$VMData = Get-VM $VMName -ErrorAction SilentlyContinue
if (!$VMData) {
"VM $VMName not found."
Return
}
# get config details
$VMConfLoc = $VMData.ConfigurationLocation
$VMGUID = $VMData.VMId
$VMVer = $VMData.Version
# select file name extension: XML until version 5.0, VMCX later
"VM $VMName version is: $VMVer"
if ($VMVer -ge '6.0') {
$VMConfExt = 'vmcx'
} else {
$VMConfExt = 'xml'
}
# create full VM config file path
$VMConfDefPath = $VMConfLoc + '\Virtual Machines\' + $VMGUID + '.' + $VMConfExt
# check if the file exists
$CheckDefPath = Get-Item $VMConfDefPath -ErrorAction SilentlyContinue
if ($CheckDefPath) {
"VM configuration file is: $VMConfDefPath"
} else {
"VM configuration file for $VMName not found."
}

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!