Compartilhar via


"VHDmount" für Hyper-V

Eine der typischen Fragen ist ja immer wieder "Wie komme ich an die Daten aus einer virtuellen Maschine dran".

Die normale Antwort ist, dass man, um z.B. Daten in oder aus einer virtuellen Maschine zu kopieren, meistens über das Netzwerk geht.
Die Methode ist natürlich immer dann weniger passend, wenn die VM gar nicht am externen Netzwerk hängt und es auch nicht soll. Hier ist dann der typische Weg für Daten in die VM eine schnell generierte ISO Datei - dafür gibt es ja auch genug freie Tools im Internet. Wer aber eh das ebenfalls kostenlose Windows Automated Installation Kit (WAIK) installiert hat, kann auch das dort enthaltene Kommandozeilenwerkzeug oscdimg.exe verwenden.

Aber wie kann man nun Daten aus der VHD wieder herausbekommen?

Seit Virtual Servers 2005 R2 gibt das Tool vhdmount.exe, mit dem man eine VHD als Laufwerk im Host einbinden kann. Das ist recht praktisch, wenn man umfangreichere Änderungen an der VHD machen möchte und geht auch nach der Installation der notwendigen Treiber (per INF Datei) recht flott von der Hand.

Seit ich jetzt mit Hyper-V arbeite, vermisse ich diese Funktion "schmerzlich".

Mir war aber aufgefallen, dass Hyper-V beim Kompaktieren einer VHD diese anscheinend auch einbindet und hatte mich immer gefragt, ob man diese dann nicht auch ganz regulär "mounten" kann.
Schon klar - die Antwort ist natürlich "ja". Wie immer führt hier der Weg über WMI und dort die Klasse MSVM_ImageManagementService. Dort gibt es dann alle benötigten Methoden, also auch .Mount().

Fertige Codeschnipsel für VBScript oder PowerShell findet man in den englischen Blogs, z.B. hier.

Jetzt braucht es eigentlich nur noch jemanden, der daraus eine Shell Erweiterung für Windows Server 2008 programmiert...