Egal ob für Hobby oder Arbeit: Man startet oft die gleiche handvoll an Programmen oder öffnet die gleichen 3-4 Internetseiten. Startmenü, Desktopverknüpfungen und Favoriten im Browser helfen, dabei den Überblick zu wahren und schneller zum Ziel zu kommen. Es gibt aber wie so oft noch Optimierungsmöglichkeiten. Eine solche Möglichkeit bietet sich auf Betriebssystemen mit PowerShell-Installation. Dabei wird eine Verknüpfung zu Powershell aufgerufen, die alle Links eines Ordners gleichzeitig öffnet. In diesem Beitrag wird im Speziellen auf Windows10 eingangen.
Problemstellung
Ein Projekt für eine Webseite macht es neben einem Code-Editor oder einer IDE auch erforderlich, Grafiken zu bearbeiten, FTP– und SSH-Verbindungen zu verwalten und vielleicht noch Dokumentationen neben dem Editor offen zu haben. Es gibt vielleicht einen lokalen und einen Online-Testserver, einen Docker-Container, Terminals für Skripte, Versionsverwaltung usw. Da können schon schnell viele Programme und Ordner zusammenkommen, die zu Beginn des Arbeitsprozesses geöffnet werden müssen.
Lösungsansatz
Nur eine Haupt-Verknüpfung benutzen und PowerShell das Aufrufen weiterer Verknüpfungen überlassen. Und so geht’s:
1. Gewünschte Verknüpfungen sammeln
- Einen Ordner anlegen, in den alle zu startenden Programme und Links kommen
- Wenn man mehrere solcher Ordner anlegt, lohnen sich aussagekräftige Namen und ein gemeinsames übergeordnetes Verzeichnis
- Ordnerpfad merken / kopieren

2. Hauptverknüpfung erstellen
Eine neue Verknüpfung erstellen

Ziel:powershell "gci | % { ii $_ }"
- powershell wird automatisch zur powershell.exe mitsamt Pfad umgewandelt
- Voraussetzung dafür ist, dass die powershell.exe sich in
$env:PATH
befindet
Kann man schnell überprüfen mittels$env:PATH.Split(';') -match 'powershell'
- Siehe auch Windows: Eigene Umgebungsvariablen setzen und verwenden
Ausführen in: Pfad des Ordners, in dem sich die Links befinden
- Dadurch wird PowerShell mitgeteilt, in welchem Ordner der Befehl ausgeführt werden soll
- Alternativ kann der Verzeichniswechsel mit ins Ziel geschrieben werden
- Dabei ist zu beachten, dass das Textfeld für Ziel auf ca. 260 Zeichen begrenzt ist
Tastenkombination: kann man setzen, wenn man möchte
Ausführen: Auf minimiert setzen
- Dient nur dem Zweck, dass das PowerShell-Fenster nicht in den Vordergrund rückt
- Bezieht sich nur auf das PowerShell-Terminal, nicht auf die aufgerufenen Links
- Man kann in den jeweiligen Verknüpfungen einstellen, ob diese normal oder maximiert / minimiert aufgerufen werden sollen
Anderes Symbol…: Icon ändern, falls man möchte
- Hat man mehrere solcher Multilinks, können Icons dabei helfen, sie voneinander abzuheben
- Standardmäßig wird das PowerShell-Icon gesetzt
- Um die Windows-Icons in der Auswahl anzuzeigen, kann man einfach das Feld mit der Symboldatei leeren oder eine ungültige Datei auswählen
- Standardsammlung ist in:
%SystemRoot%\System32\SHELL32.dll
Erweitert…: nicht als Admin starten
- Der Befehl kann ohne Administratorrechte ausgeführt werden
- „Als Administrator ausführen“ bezieht sich nur auf den PowerShell-Befehl
- Falls bestimmte Verknüpfungen als Admin gestartet werden sollen, muss das in den jeweiligen Verknüpfungen eingestellt sein
3. Loslegen!
- Die zu startenden Programme können einfach und schnell im Verknüpfungsordner verwaltet werden
- Multilink und Linkordner können kopiert und angepasst werden, wenn man eine neue Programm-Gruppe braucht
- Das ermöglicht einen modularen und ablauforientierten Workflow
Hinweise
- Auch wenn hier nicht näher darauf eingegangen wurde, ist diese Vorgehensweise auch mit CMD und Batch möglich (bei Linux kann man dafür Shellskripte schreiben, oder neuerdings ebenfalls PowerShell verwenden).
- .url-Dateien werden mit dem Standardbrowser als Tab geöffnet. Um mehr Kontrolle über Browser und Fenster zu haben, kann man stattdessen eine Verknüpfung zum Browser in den Ordner legen und dort als Parameter die gewünschte Webseite und eventuell weitere Kommandozeilen-Parameter angeben.
- Die Variante
gci | % { ii $_ }
kann auch ohne Pipeline geschrieben werden, dann aber mitforeach
statt%
(ForEach-Object
)foreach($link in (Get-ChildItem)) { Invoke-Item $link; }
- War ein Ordner bereits geöffnet, so wird er durch die Ordnerverknüpfungen lediglich in den Vordergrund gebracht
- Wenn jedes Mal ein neues Fenster geöffnet werden soll, reicht es, unter „Ziel“ explorer an den Anfang zu setzen (ähnlich wie bei .url-Dateien und Browsern)
Links
- Doku zu gci (Get-ChildItem):
- https://docs.microsoft.com/de-de/powershell/module/Microsoft.PowerShell.Management/Get-ChildItem
- Für die eigene PS-Version aufrufen per:
Get-Help Get-ChildItem -Online
- Doku zu ii (Invoke-Item):
- https://docs.microsoft.com/de-de/powershell/module/Microsoft.PowerShell.Management/Invoke-Item
- Für die eigene PS-Version aufrufen per:
Get-Help Invoke-Item -Online
- Doku zu % (ForEach-Object):
- https://docs.microsoft.com/de-de/powershell/module/Microsoft.PowerShell.Core/ForEach-Object
- Für die eigene PS-Version aufrufen per:
Get-Help ForEach-Object -Online
- Pipelining in PowerShell:
- Befehls-Aliasse:
- Für eine Auflistung aller Aliasse:
Get-Alias
- Verwendete Aliasse:
Get-Alias %
Get-Alias gci
Get-Alias ii
- Für eine Auflistung aller Aliasse:
- Aktuelles Objekt ($_) :