Windows-Systemkomponenten

Windows Powershell richtig nutzen

Powershell und pS1-Scripts

Die Überlegenheit der Powershell gegenüber der Cmd.exe ist deutlich. Trotzdem fällt vielen der Umstieg schwer, die sich jahrelang an die Eigenheiten der Eingabeaufforderung gewöhnt hat. Einige Aliases, die diesem Umstand Rechnung tragen, gibt Microsoft der Powershell bereits mit - so etwa das erwähnte "dir" für "get-childitem" oder "del" für "remove-item". Den Vorrat der Alias-Befehlsabkürzungen können Sie aber jederzeit erweitern: Eigene Aliases sind mit Befehlen wie

new-alias n notepad.exe

schnell angelegt (um mit "n" den Editor zu starten). Der Wert solcher Aliases ist aber begrenzt, da sie nur als Kommandoabkürzung taugen und keinerlei Argumente zulassen. Weit leistungsfähiger sind Funktionen:

function n {notepad.exe $args}

Jetzt kann auf dem Prompt der Dateiname gleich mitgegeben werden. $Args ist eine Standardvariable, die sämtliche oder einzelne Argumente weitergibt. Da der Powershell-Prompt eine Eingabe wie "3.14 * 6.34" oder "0x2A1" (Hex-Zahl) direkt als Rechenaufgabe interpretiert und löst, können Sie mit etwas Code auch komplexere Aufgaben umsetzen:

function Tage {((get-date("$args"))-(get-date)).days}

Die Eingabe "tage 22.10.2009" gibt dann die Anzahl der Tage bis zum eingegebenen Datum zurück.

Ganz ohne Scripts geht’s nicht: daher sollten sie das unsinnige Script-Verbot der Powershell mit "set-executionpolicy unrestricted" abstellen. Das gelingt nur mit Admin-Rechten.
Ganz ohne Scripts geht’s nicht: daher sollten sie das unsinnige Script-Verbot der Powershell mit "set-executionpolicy unrestricted" abstellen. Das gelingt nur mit Admin-Rechten.

PS1-Scripts anlegen: Der in einer Funktion abgelegte Code gilt nur so lange, bis die Shell geschlossen wird. Daher stellt sich auch für sporadische Benutzer der Powershell sehr schnell die Frage, wie sich komplexere Funktionen, Befehle oder Aliases dauerhaft speichern lassen. Ähnlich wie Cmd benutzt die Powershell einfache Textdateien als Script-Format, die Sie mit jedem Texteditor wie Notepad erstellen können. Entscheidend ist dabei die Endung ".ps1".

Ein Sonderfall ist das Script Profile.ps1, das die Shell beim Start automatisch einliest - der ideale Ort für persönliche Funktionen, Variablen und Aliases. Der Standardpfad der aktuellen Version 3.0 ist "%windir%\System32\WindowsPowerShell\v1.0". Eine hier abgelegte Profile.ps1 lädt die Powershell beim Start in jedem Fall. Besser und sauberer ist es aber, die Profile.ps1 im Benutzerprofil abzulegen. Der korrekte Ordner dafür ist "%userprofile%\Documents\WindowsPowerShell". Als einfachste Anpassungen könnten Sie kleine Navigationshilfen in die neu angelegte Profile.ps1 einbauen - etwa um mit "d" zum Desktop zu wechseln:

Function d {push-location"${env:userprofile}\Desktop"}

Ebenso nützlich kann eine einfache Funktion sein, die das aktuelle Verzeichnis als Explorer-Fenster startet:

Function ex {explorer.exe$(get-location).path}

Alle Cmdlets: in Version 3.0 liefert der Hilfsbefehl "ShowCommands" eine Übersicht zu allen Powershell-Kommandos.
Alle Cmdlets: in Version 3.0 liefert der Hilfsbefehl "ShowCommands" eine Übersicht zu allen Powershell-Kommandos.

Scripts freischalten: Nach ersten Anpassungen der Profile.ps1 erleben Sie beim Start der Powershell erst mal eine enttäuschende Bremse. Wenn Sie die Powershell vorher nie genutzt haben, ist jede Script-Ausführung erst mal verboten. Sie müssen erst dieses Verbot aufheben. Starten Sie dazu die Powershell über das Startmenü von Windows 7 oder 8 mit der Option "Als Admin[istrator] ausführen". Sie benötigen Adminrechte, um mit

Set-ExecutionPolicy unrestricted

den nötigen Eintrag in der Windows-Registry machen zu dürfen. Danach sind alle PS1-Scripts sofort erlaubt und lauffähig.