Es ist möglich PowerShell Skripte remote zu entwickeln. Also das Skript wird auf einem remote Computer gespeichert und ausgeführt, aber die Eingabe erfolgt im lokalen Editor-Tool. Das geht sowohl mit der klassischen Windows PowerShell ISE, als auch mit Visual Studio Code. In VSCode könnt ihr sowohl mit remote Windows PowerShell, als auch remote PowerShell 7 Systemen arbeiten. 🎬 Ich habe übrigens auch ein Video zu dem Thema erstellt.
Windows PowerShell ISE
Die Windows PowerShell ISE unterstützt nur remote Windows Systeme mit Windows PowerShell. Um remote ein Skript zu entwickeln, könnt ihr über das Menü “Datei” ➡️ “Neue Remote-PowerShell-Registerkarte” eine Session starten.
Im Dialog “Neue Remote-PowerShell-Registerkarte” könnt ihr dann den Hostname des remote Computers angegeben und optional noch einen anderen Benutzernamen. Falls der User mit dem ihr lokal angemeldet seid schon Rechte für den Remotecomputer hat, ist es nicht nötig ihn hier erneut anzugeben.
Es öffnet sich eine neuer Tab. An den eckigen Klammern in der Prompt ist erkennbar, dass es sich um ein remote System handelt.
Um eine neue Skriptdatei auf dem Remotecomputer anzulegen, könnt ihr das Cmdlet New-Item
verwenden. Mit dem Befehl psedit
könnt ihr ein Skript, welches auf dem Remotecomputer liegt zur Bearbeitung laden.
|
|
Anschließend öffnet sich innerhalb des Remote-Tabs ein Tab für eure “Remotedatei”. Wenn ihr mit dem Mauszeiger über den Titel des Remotedatei-Tabs fahrt, wird ein lokaler Pfad sichtbar in dem das Skript zwischengespeichert wird. Wenn ihr das Skript speichert, werden die Änderungen aber automatisch auf das Remotesystem übertragen.
Jetzt könnt ihr im Grunde normal mit der Windows PowerShell ISE ein Skript entwickeln. Also wahlweise einzelne Zeilen oder das ganze Skript ausführen. Die Befehle werden auf dem Remote System ausgeführt, wie zum Beispiel im nachfolgenden Screenshot erkennbar. Der Inhalt der Variable $ENV:COMPUTERNAME
wird ausgegeben, wodurch erkennbar ist, dass das Skript auf dem Host Server1
ausgeführt wird.
Auch Debugging ist möglich. Im nachfolgenden Screenshot habe ich zum Beispiel per F9
-Taste einen Breakpoint gesetzt und das Skript per F5
-Taste im Debugging-Modus ausgeführt.
Wenn ihr fertig seid, könnt ihr den Remote-Tab einfach schließen.
Visual Studio Code
Auch Visual Studio Code unterstützt remote PowerShell Entwicklung. Und hier ist sogar PowerShell 7 möglich - wobei Windows PowerShell auch weiterhin geht. Wichtig ist, dass ihr die PowerShell Extension installiert habt. Und es muss auch die Konsole der Extension laufen. Falls ihr gerade nicht lokal schon ein PowerShell Skript bearbeitet, kann es sein, dass die Extension Konsole noch nicht läuft. Um sie zu starten könnt ihr per Tastenkombination “STRG” + “Umschalt” + “P” die Command-Palette öffnen. Dort könnt ihr dann nach “PowerShell: Restart Session” suchen und den Punkt ausführen.
Um eine Verbindung mit einem Windows PowerShell System herzustellen, könnt ihr einfach in der Extension Konsole Enter-PSSession <Hostname>
ausführen. Also zum Beispiel:
|
|
Falls ihr euch mit einem PowerShell 7 System verbinden wollt, dann müsst ihr den Parameter -Hostname
mitangeben. Ansonsten wird der ausgelassene Parametername als -Computername
interpretiert, was nur für Windows PowerShell Systeme geeignet ist. Bei beiden Varianten könnt ihr mit -Username
einen anderen Username angeben, falls euer Remotesystem es erfordert.
|
|
Skripte anlegen und bearbeiten ist dann im Grunde wie auch in der Windows PowerShell ISE: Neue Skriptdateien können per New-Item
angelegt werden, Skript bearbeiten geht per psedit
. Anschließend könnt ihr auch per F8-Taste die aktuelle Zeile oder Markierung ausführen, beziehungsweise mit der F5-Taste das ganze Skript.
|
|
Theoretisch sollte auch das Remote-Debuggen funktionieren, aber als ich es im März 2024 getestet habe, hat es gerade nicht funktioniert. Das scheint aber ein bekanntes Problem zu sein, und sollte eigentlich demnächst wieder gehen.
Wenn ihr fertig seid: Eine Remote Session könnt ihr per Exit-PSSession
beenden.