Disk-Management mit PowerShell: initialisieren, partitionieren, formatieren

    Powershell-LogoMicrosoft wertet PowerShell in Windows 8 und Server 2012 zum bevorzugten Management-Werkzeug auf, das mit neuen Modulen fast alle Aspek­te des Systems abdecken kann. Das trifft auch auf das Storage-Subsystem zu, das sich nun auf eine konsistente Weise via Kommando­zeile oder über Scripts verwalten lässt.

    Windows bietet für die Datenträgerverwaltung ein historisch gewachsenes Sammelsurium an Tools an, sowohl für die grafische Oberfläche als auch für die Kommandozeile. Unter den Letzteren finden sich zum Beispiel diskpart, chkdsk, defrag oder format. Sie eignen sich nur bedingt für die Automatisierung von Aufgaben, weil sie schlecht zusammenarbeiten. Hinzu kommt eine uneinheitliche Syntax, diskpart hat sogar eine eigene interaktive Shell.

    Vorteile der Disk-Verwaltung durch PowerShell

    Der Vorteil einer durchgehenden Unterstützung für das Disk-Management in PowerShell besteht zum einen darin, dass alle Cmdlets der einheitlichen Namenskonvention folgen und sie die gleiche Syntax für Parameter verwenden.

    Zum anderen lassen sich die Aufrufe zu längeren Befehlen verketten, weil die Objekte, die ein Cmdlet erzeugt, über eine Pipe an andere weitergegeben werden können. Dies eröffnet die Möglichkeit zur Automatisierung von Abläufen. Schließlich stehen noch Komfortfunktionen wie Autovervollständigen von Befehlen oder die Formatierung der Ausgabe zur Verfügung. Nicht zuletzt lassen sich die meisten Aufgaben auch remote erledigen.

    Laufwerke auswählen

    Um Laufwerke zu bearbeiten, muss man PowerShell als Administrator aufrufen. Unabhängig vom Tool besteht der erste Schritt immer darin, dass man einen bestimmten Datenträger für die geplanten Operationen auswählt. PowerShell bietet zu diesem Zweck das Cmdlet Get-Disk. Ohne Parameter aufgerufen gibt es alle Laufwerke zurück, die für das Betriebssystem sichtbar sind. Möchte man nur die physikalischen Disks haben, dann nimmt man dafür Get-PhysicalDisk.

    Allerdings bietet Get-Disk viele Möglichkeiten, die Liste der zurückgegebenen Laufwerke zu filtern (die dafür verfügbaren Eigenschaften kann man über Get-Disk|gm auslesen). Möchte man nur jene bearbeiten, die noch keine Partitionen haben, dann gibt man

    get-disk|where {$_.NumberOfPartitions -eq 0}

    ein. Möchte man die Laufwerke nach Typ auswählen (also SCSI, SAS oder USB), dann hilft die Eigenschaft BusType:

    get-disk|where {$_.BusType -eq "USB"}

    Disks initialisieren

    Hat man beispielsweise alle nicht partitionierten Festplatten eines bestimmten Typs ermittelt, dann kann man sie im nächsten Schritt initialisieren. Dabei übergibt man entweder den Output von Get-Disk oder identifiziert die Laufwerke über die Parameter DiskNumber oder DiskID beim Aufruf von Initialize-Disk. In diesem Schritt legt man zudem fest, ob man ein MBR- oder GPT-Laufwerk möchte. Fehlt die betreffende Angabe, dann ist GPT voreingestellt.

    Get-Disk|where {$_.PartitionStyle -eq "RAW" -and $_.BusType -eq "USB"}|Initialize-Disk -PartitionStyle MBR

    würde alle angeschlossenen und nicht initialisierten USB-Laufwerke mit MBR initialisieren.

    Partitionen erstellen

    Für das Einrichten von Partitionen ist das Cmdlet New-Partition zuständig. Wenn man möchte, kann man es in die oben angeführte Befehlskette anhängen, indem man Initialize-Disk zusätzlich mit dem Parameter -passthu aufruft und seine Ausgabe über eine Pipe an

    New-Partition -AssignDriveLetter -UseMaximumSize

    weiterreicht. Damit würde auf jedem Laufwerk der gesamte verfügbare Platz von einer neuen Partition belegt, die zudem den nächsten freien Laufwerksbuchstaben erhält.

    Alternativ kann man New-Partition in einem eigenständigen Befehl aufrufen und ihm über die Parameter -DiskNumber, -DiskPath oder -DiskID mitteilen, welche Platte man meint.

    New-Partition -DiskNumber 2 -DriveLetter J -IsActive -Size 250GB

    würde auf der Platte mit den Nummer 2 eine neue Partition in der Größe von 250 GB einrichten, sie aktiv markieren und ihr den Laufwerksbuchstaben J zuweisen.

    Partitionen vergrößern und verkleinern

    Für das Ändern der Größe von Partitionen gibt es das Cmdlet Resize-Partition. Ihm muss man mitteilen, welche Partition man bearbeiten möchte, indem man die Nummer oder ID der Disk und der Partition als Parameter übergibt. Eine weitere verpflichtende Angabe ist die neue Größe:

    Resize-Partition -DiskNumber 1 -PartitionNumber 1 -Size 150GB

    Wenn man eine Partition auf die minimale oder maximale Größe bringen möchte, dann hilft dabei die Funktion Get-PartitionSupportedSize(). Sie liefert die möglichen Werte, wobei sich das Minimum über SizeMin und das Maximum über SizeMax ermitteln lassen:

    Resize-Partition -DiskNumber 0 -PartitionNumber 3 -Size (Get-PartitionSupportedSize -DiskNumber 0 -PartitionNumber 3).SizeMin

    Dieser Befehl schrumpft die betreffende Partition auf die geringste mögliche Größe. Bei solchen heiklen Operationen ist es empfehlenswert, die Befehle erst mit den Parameter -WhatIf zu starten, um zu sehen, was im Ernstfall passieren würde.

    Partitionen formatieren

    Das Einrichten eines Dateisystems schließlich erfolgt über das Cmdlet Format-Volume. Erwartungsgemäß muss man ihm mitteilen, welche Partition bzw. welches Volume gemeint ist. Das kann man über den Laufwerksbuchstaben, die ID oder das Label tun:

    Format-Volume -DriveLetter J

    Wenn man ein Dateisystem explizit auswählen möchte, dann spezifiziert man den Parameter -FileSystem. Zulässige Werte sind NTFS, ReFS, exFAT, FAT32 und FAT. Zusätzlich lässt sich die Sicherheitsnachfrage durch die Angaben von -Force überspringen und statt des voreingestellten Quick Format eine vollständige Formatierung mit -Full erzwingen.

    Keine Kommentare