Partitionen (remote) vergrößern und verkleinern mit PowerShell

    DatenträgerverwaltungWenn man die Größe von Parti­tionen nach­träglich an­passen möchte, dann dient meistens die Daten­träger­verwal­tung dieser Aufgabe. Auf einer Instal­lation von Server Core oder generell bei der Remote-Verwaltung empfiehlt sich dagegen PowerShell als Alter­native. Zuständig ist dort das Cmdlet Resize-Partition.

    Die Notwen­digkeit zur Anpassung von Partitions­größen ergibt sich häufig dann, wenn man virtuelle Laufwerke zu klein dimensioniert hat. Diese lassen sich dann zwar sehr einfach vergrößern, aber anschließend muss man im Gast-OS noch die Partitionen nachziehen, um den gewonnenen Speicher­platz nutzen zu können.

    GUI-Tool mit Schwächen bei der Remote-Verwaltung

    Während die Datenträger­verwaltung für das Management lokaler Laufwerke recht komfortabel ist, erfordert sie bei der Remote-Verwaltung einige Voraussetzungen auf dem Zielrechner. Notorisch ist dabei zudem die Fehler­meldung, wonach der RPC-Server nicht erreichbar sei.

    Nutzt man hingegen die PowerShell-Cmdlets für das Management von Disks oder Partitionen, dann reicht es, wenn man eine CIM-Session zum entfernten Rechner aufbaut und diese dann den Kommandos als Parameter mitgibt:

    $cs = New-CimSession -Credential contoso\admin -ComputerName WS2016

    Get-Partition -CimSession $cs -DriveLetter D

    Get-Partition zeigt die Größe der Partition, aber nicht des freien Speicherplatzes.

    Auf diese Weise würde man einige Informationen über die Partition erhalten, die auf dem Remote-PC den Buchstaben D: hat, darunter die aktuelle Größe. Nicht erfahren wird man auf diesem Weg jedoch, wie viel Platz auf der Partition belegt bzw. noch frei ist. Das wird man aber oft wissen wollen, bevor man die Größe einer Partition ändert.

    Freien Speicherplatz anzeigen

    Während man diese Information unter dem alten Kommando­interpreter bei jedem Aufruf von dir bekommt, schweigt sich das PowerShell-Gegenstück Get-ChildItem darüber aus. Daher muss man zu diesem Zweck den Befehl Get-PSDrive bemühen. Die Eingabe von

    Get-PSDrive D

    liefert die Daten zum Laufwerk D.

    Freien Speicherplatz remote anzeigen mit Get-PSDrive

    Für den Abruf der Infos von einem Remote-Rechner ist dieses Kommando nicht vor­gesehen, daher muss man es in ein Invoke-Command packen:

    $ps = New-PSSession -ComputerName WS2016 -Credential contoso\admin
    Invoke-Command -Session $ps -ScriptBlock{Get-PSDrive -PSProvider FileSystem}

    Dieses Beispiel würde die Informationen zu allen Laufwerken zurückgeben.

    Zulässige neue Werte ermitteln

    Möchte man nun heraus­finden, wie weit man die Partition verkleinern oder vergrößern kann, dann ruft man dafür

    Get-PartitionSupportedSize -DriveLetter D

    auf. Dieses Cmdlet unterstützt wie Get-Partition den Parameter CimSession und könnte daher auch remote aufgerufen werden, das Gleiche gilt für die folgenden Beispiele.

    Den minimal und maximal zulässigen Wert erhält man beim obigen Befehl in Byte, den man bei Bedarf mittels

    Get-PartitionSupportedSize -DriveLetter D |
    select @{Name="Maximum";Expression={$_.SizeMax/1GB}}

    umrechnen kann.

    Zulässige minimale und maximale Größe einer Partition ermitteln und diese dann ändern.

    Größe der Partition ändern

    Im letzten Schritt orientiert man sich an dieser Ober- und Untergrenze, um die neue Größe der Partition festzulegen:

    Resize-Partition -DriveLetter D -Size 200GB

    Damit würde die neue Größe auf 200GB geändert, wenn sich diese innerhalb des zulässigen Rahmens bewegt.

    Keine Kommentare