Powershell löst Diskpart ab!

25. Juni 2013

Auch wenn immer mehr Daten „in der Wolke“ gespeichert werden – für den Systemprofi ist und bleibt es wichtig, mit den Festplatten und Datenträgern in seinen Rechner schnell und einfach zu arbeiten. Darum arbeiten viele Administratoren auch gerne mit dem Kommandozeilen-Tool Diskpart: Mark Minasi zeigt hier, welche Powershell-Cmdlets dieses Werkzeug ablösen können.

Bild 1. Schnell sehen, welche Laufwerksbuchstaben belegt sind: das Cmdlet get-volume hilft dabei.

In diesem Artikel möchten wir drei Cmdlets etwas näher vorstellen, die unser Autor Mark Minasi in seiner ganz persönlichen Werkzeugkiste für den täglichen Einsatz auf dem Windows-System immer wieder verwendet. Allerdings besitzen diese drei Powershell-Kommandos eine Einschränkung: Sie stehen nur auf den neuen Windows-Versionen Windows 8 und Windows Server 2012

Das get-volume Cmdlet: Kein Windows Explorer nötig

Viele Systemadministratoren kennen sicher die Situation: Mindestens einmal am Tag müssen sie wissen, welche Laufwerksbuchstaben auf einem System noch frei und welche aktuell gerade im Gebrauch sind. Der gängige Weg bestand dann darin, dass sie den Windows Explorer öffnen oder an der Kommandozeile das Programm Diskpart starten. Dort wird dann das Kommando

list volume (oder kurz lis vol)

eingegeben, um die gewünschte Information anzuzeigen. Nachteile der beiden Methoden: Beim Einsatz des Explorers ist die Windows-Oberfläche samt Maus gefordert und die Verwendung von Diskpart braucht doch eine gewisse Zeit bis es gestartet ist – der weitere Arbeitsablauf wird verzögert. Wer hingegen wie unser Autor sowieso die meiste Zeit während er am System arbeitet ein Powershell-Fenster geöffnet hat, braucht nur noch das folgende Kommando einzugeben:

get-volume

Dieses Cmdlet zeigt dann neben einer ganzen Reihe anderer Information (siehe auch Screenshot in Bild 1) alle Laufwerksbuchstaben an, die aktuell auf dem System in Verwendung sind.

Bild 2. Der nächste Schritt: Mit Hilfe von set-partition können die Laufwerksbuchstaben schnell geändert werden.
Bild 3. Funktioniert nur mit Administratorrechten: Das Cmdlet get-disk zeigt die Informationen zu den physikalischen Platten an.

Neue Laufwerksbuchstaben Buchstaben mit Set-Partition

Das Cmdlet get-volume besitzt mit set-partition einen „nahen Verwandten“, der in diesem Zusammenhang ebenfalls sehr nützlich sein kann. Häufig benötigt ein Anwender die Informationen zu den verwendeten Laufwerksbuchstaben deshalb, weil er diesen Bezeichner für eine bestimmte Partition gerne verändern möchte. So ist es beispielsweise in einer unserer Testumgebungen Standard, dass sich die virtuellen Maschinen – die von der Software VMware Workstation verwendet werden – grundsätzlich im Verzeichnis VMs auf dem Laufwerk E befinden.

Diese befindet sich wiederum in der Regel auf der zweiten physikalischen Festplatte in dem System. Die VMware Workstation benötigt also diese Zuordnung, damit alles funktioniert – oder der Administrator muss die Software jedes Mal wieder neu konfigurieren. Nun ist es aber leider gerade in Testumgebungen immer wieder an der Tagesordnung, dass unterschiedliche Kombinationen von Storage-Geräten ganz verschieden mit dem System verbunden werden – so kann es dann auch passieren, dass das Laufwerk mit den virtuellen Maschinen eben nicht mehr den Buchstaben E zugeordnet bekommt. Eine Möglichkeit besteht dann sicher darin, dieses Problem mit Hilfe einer symbolischen Verknüpfung und dem Kommandozeilen-Programm mklink.exe zu beseitigen.

Auch ansonsten ist das Problem sicher grundsätzlich nicht schwer zu lösen: Hat beispielsweise ein neuer USB-Stick den Laufwerksbuchstaben E „übernommen“ und die Festplatte besitzt nun G, dann kann der Anwender mittels der Datenträgerverwaltung oder eben auch wiederum mit Diskpart dem USB-Stick einen anderen Laufwerksbuchstaben zuweisen, damit den Buchstaben wieder „freistellen“ und dann der Festplatte wieder wie gewünscht diesen Buchstaben zuweisen. Auch hier liegt das Problem wiederum eher darin begründet, dass die Datenträgerverwaltung oder Diskpart zunächst gestartet und dann die einzelnen Operationen ausgeführt werden müssen. Allerdings ist gerade die Syntax von Diskpart mit Vorsicht als eigenwillig und gewöhnungsbedürftig zu bezeichnen. Zwar sind auch die Powershell-Cmdlets nicht gerade kurz, aber insgesamt sehr viel übersichtlicher und leichter zu durchschauen. Hier die zwei Aufrufe, die das zuvor geschilderte Problem lösen:

set-partition -driveletter E -newdriveletter V
set-partition -driveletter G -newdriveletter E

Diese Kommandos sind einfach zu merken und wer einen Powershell-Prompt bereits geöffnet hat und mit der automatischen Kommandoergänzung via der Tabulatortaste arbeitet, bekommt diese drei Kommandos (es muss ja zunächst ein get-volume aufrufen) sehr viel schneller eingegeben und ausgeführt, als der die Datenträgerverwaltung oder gar Diskpart startet — selbst unter Einsatz der Tastenkombination Windows +X, die unter Windows 8 und auf dem Windows Server 2012 den schnellen Weg zur Datenträgerverwaltung eröffnet. Wer sich die Parameter sparen möchte: set-partition arbeitet auch interaktiv direkt am Powershell-Prompt (Bild 2).

Noch mehr Diskpart-Ersatz mit Get-Disk

Viele Aufgaben rund um Speichermedien und Festplatten verlangen aber nicht nach dem Laufwerksbuchstaben sondern nach einer Laufwerksnummer. Hier hat sich allerdings ein kleiner Fehler in der Terminologie eingeschlichen (mit Vorsatz durch unseren Autor), indem hier der Begriff „Laufwerk“ einmal für eine physikalische Festplatte und einmal für ein Volumen/eine Partition verwendet wurde. Das entspricht aber durchaus dem gängigen Sprachgebrauch in der IT:

Die meisten IT-Fachleute werden von der Installation eines neuen Laufwerks (einer Festplatte) sprechen um sich gleich danach auf die Daten auf dem Laufwerk G (womit ein Volumen oder eine Partition gemeint ist) zu beziehen. Der vorherige Aufruf von set-partition zeigt zudem, dass die Powershell-Entwickler diese Abgrenzung ebenfalls nicht so genau nehmen.

Müssen wir deshalb aber auf die Datenträgerverwaltung oder doch Diskpart zurückgreifen, wenn wir Informationen über die physikalischen Platten in einem System erhalten wollen? Nein, denn auch hier steht mit get-disk ein Powershell-Cmdlet bereit. Der Aufruf

get-disk

muss allerdings in einem Powershell-Fenster mit Administratorberechtigung erfolgen, damit das Kommando auch auf die entsprechenden Parameter des Systems zugreifen kann. Somit gibt es wieder einen Grund weniger Diskpart aufzurufen und der Powershell die Arbeit zu überlassen.

Mark Minasi/ fms

Lesen Sie auch