Windows Powershell – Aliase dauerhaft erstellen

Written on January 03, 2011

Praktisch jede moderne Shell (Kommandozeile) verfügt über sogenannte Aliase.

Aliase ermöglichen es, häufig benutzte Befehle abzukürzen.

Ein Beispiel für einen vermutlich mehrmals täglich genutzten Alias "cd".

"cd" ist ein Alias für das CmdLet "Set-Location".

Eigene Aliase kann man in der Windows Powershell mit dem Befehl "SetAlias" definieren:

Set-Alias np c:\windows\notepad.exe

Damit haben wir den Alias "np" für den Windows-Editor definiert.

Will man nun einen Alias für ein Programm oder CmdLet mit Parametern erstellen, z.B. so:

Set-Alias netfx4 Set-Location C:\Windows\Microsoft.NET\Framework\v4.0.30319

erhält man folgende Fehlermeldung:

Set-Alias : A positional parameter cannot be found that accepts argument 'C:\Windows\Microsoft.NET\Framework\v4.0.30319'.

Der Trick zur Lösung des Problems liegt in der Verwendung eines CmdLets oder einer Funktion, in der der Parameter (nichts anderes ist der Pfad) verwendet werden kann:

function fnetfx4 {set-location C:\Windows\Microsoft.NET\Framework\v4.0.30319}

Danach weisen wir unserem Alias die Funktion zu:

Set-Alias netfx4 fnetfx4

Nun funktioniert der Aufruf des Aliases problemlos.

Allerdings sind der Alias und die Funktion nach dem Schließen und erneuten Öffnen der Powershell wieder weg.

Der Grund hierfür ist, dass benutzerdefinierte Aliase im Benutzerprofil gespeichert werden müssen, damit sie dauerhauft verfügbar sind.

Zunächst prüft man, ob ein Powershell-Profil existiert:

Test-Path $profile

Erhält man "True" zurück, kann man das Profil mit

notepad $profile

bearbeiten.

Erhält man "False" zurück, muss man das Profil erstellen:

New-Item -path $profile -type file --force

Danach kann man Profil bearbeiten und die beiden o.g. Zeilen einfügen:

function fnetfx4 {set-location C:\Windows\Microsoft.NET\Framework\v4.0.30319} 
Set-Alias netfx4 fnetfx4

Nun ist der Alias dauerhaft gespeichert und steht auch nach einem Neustart der Powershell noch zur Verfügung.

P.S.: Bei Pfaden, die Leerzeichen enthalten, müssen umschließende Anführungszeichen verwendet werden, z.B. "C:\Mein Pfad mit Leerzeichen"

DotNetKicks-DE Image