Disk-Management mit PowerShell: initialisieren, partitionieren, formatieren


    Tags: , ,

    Powershell-LogoWindows 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. Viele ihrer Funktionen finden sich mittlerweile aber in diversen PowerShell-Cmdlets.

    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.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links