VHDX Anpassungen mit der Windows PowerShell

Wer mal eben eine VM unter Microsoft Hyper-V 3.0 anlegt, der erstellt sie mit einer 127GB dynamisch wachsenden VHDX-Festplatte. Wer dann noch 2 VMs auf einem Notebook ohne SSD benutzt, der merkt recht schnell wie langsam ein System durch Random-IO werden kann. Da mir das gelegentlich passiert, das ich aus Kapazitätsgründen dynamische Datenträger bevorzuge,

Wer mal eben eine VM unter Microsoft Hyper-V 3.0 anlegt, der erstellt sie mit einer 127GB dynamisch wachsenden VHDX-Festplatte. Wer dann noch 2 VMs auf einem Notebook ohne SSD benutzt, der merkt recht schnell wie langsam ein System durch Random-IO werden kann. Da mir das gelegentlich passiert, das ich aus Kapazitätsgründen dynamische Datenträger bevorzuge, machte ich mich auf die Suche nach einer einfachen Möglichkeit VHDX Dateien zu bearbeiten. Die Konvertierung kann über die GUI gesteuert werden, eine gezielte Größen Änderung aber nicht. Seit Hyper-V 3.0 hat sich da in der Power Shell was getan, es gibt neue Befehle wie zum Beispiel Resize-VHD und Convert-VHD. Doch damit das funktioniert, muss vorher innerhalb der VM noch der nötige Platz geschaffen werden, das bedeutet die Partitionen müssen entsprechend verkleinert werden.


Nach dem verkleinern sollte die Festplatte so aussehen


Nach dem die Partitionen entsprechend verkleinert wurden, bedarf es nur noch ein paar Zeilen PowerShell:

$VHDFILE=”D:VMEX10EX10DC01Virtual Hard DisksEX10DC01.vhdx”

$VHDNEWFILE=”D:VMEX10EX10DC01Virtual Hard DisksEX10DC01-Fixed.vhdx”

Resize-VHD -Path $VHDFILE -SizeByte 60GB

Convert-VHD -Path $VHDFILE -DestinationPath $VHDNEWFILE -VHDType Fixed

Move-Item $VHDNEWFILE $VHDFILE -Force

Dabei sollten die Variablen $VHDFILE und $VHDNEWFILE durch die entsprechenden Werte ersetzt werden (Pfad mit Dateinamen). Wer möchte kann die Quelldatei auch direkt löschen, in dem der Convert-VHD Befehl um ein “-DeleteSource” erweitert wird, oder wie ich einfach die alte VHDX-Festplatte überschreibt.


Der Konvertierungsvorgang braucht einige Zeit, da eine entsprechend große und leere VHDX-Datei erstellt wird und dann die Daten Kopiert werden.


Die Anregung für die PowerShell Lösung habe ich durch Thomas Hanrath erhalten, der in seinem Blog eine Lösung beschrieben hat, um VHD Dateien zu verkleinern mit Hyper-V 3.0 und der PowerShell.

Autor: Fabian Niesen

Fabian Niesen ist seit Jahren beruflich als IT-Consultant unterwegs. Hier schreibt er privat und unabhängig von seinem Arbeitgeber. Unter anderem ist er Zertifiziert als MCSA Windows Server 2008 / 2012, MCSA Office 365, MCSA Windows 10, MCSE Messaging, MCT und Novell Certified Linux Administrator. Seit 2016 ist er auch MCT Regional Lead für Deutschland. Seine Hobby’s sind Social Media, Bloggen, Mittelaltermärkte, Historische Lieder und der Hausbau.

Ein Gedanke zu „VHDX Anpassungen mit der Windows PowerShell“

Kommentare sind geschlossen.