IT

PowerShell als Webserver über http-Protokoll – auch als One-Liner!

Eine Webseite programmiert man in PHP oder einer anderen fürs Web spezialisierten Programmiersprache und macht diese über einen Webserver wie Apache, nginx oder den eher unbeliebten IIS verfügbar. Aber für kleine Aufgaben ist dies eventuell zu viel Overhead. Immerhin muss man hierfür unnötigerweise weitere Software auf dem Computer oder Server installieren.

Es reicht aber vielleicht auch ein einfaches PowerShell-Skript um einen Webserver zu starten bzw. eine Webseite über das http-Protokoll bereitzustellen. Wie du einen Webserver in der PowerShell bereitstellst erfährst du in diesem Artikel!

 

Webserver in der PowerShell als One-Liner!

Wenn mal eben schnell einen Webserver brauchst kannst du diesen Einzeiler verwenden um unter Port 5001 über http://localhost:5001 den Inhalt aus diesem html-Dokument („C:\ps.html“) anzubieten:

Den Webserver kann man einfach beenden indem man das PowerShell-Fenster schließt.

 

Webserver in der PowerShell

Hier ist die ausführliche Variante des Skripts um den Webserver unter Port 5001 zu betreiben:

Den auszugebenden html-Code kann man natürlich, wie auch unter PHP oder in anderen Sprachen, beliebig dynamisch zusammenbauen! Hierdurch ergeben sich vielfältige Möglichkeiten html-Output zu generieren.

Damit die Webseite die ganze Zeit durch den PowerShell-Webserver verfügbar ist, muss man die Ausgabe loopen. Ansonsten hört diese Ausgabe nach Absetzen des entsprechenden Befehls logischerweise wieder auf. Dazu nutzt man einfach eine Endlosschleife deren Bedingung auf ewig „true“ bleibt. Mehr zu Schleifen in der PowerShell und in der Kommandozeile erfährst du hier.

Wenn es aus irgendeinem Grund innerhalb des Skriptablaufs nötig sein sollte, kann man den http-Listener auch innerhalb des Skripts wieder schließen und der Port wird wieder freigegeben:

 

Webserver in der PowerShell im Hintergrund automatisch laufen lassen

Um den Webserver dauerhaft im Hintergrund laufen zu lassen und auch automatisch starten zu lassen, könnte man einfach eine Aufgabe im Taskplaner anlegen und das PowerShell-Skript automatisch beim Computerstart starten lassen. Oder man macht es richtig professionell und macht daraus sogar einen Windows Service.

 

http-Webserver mit PowerShell – Warum überhaupt?

Die PowerShell ist eine mächtige Skriptsprache und Befehlszeilen-Shell, die von Microsoft entwickelt wurde. Obwohl die PowerShell normalerweise eher mit der Systemadministration in Verbindung gebracht wird, kann man sie auch zur Erstellung eines http-Webservers verwenden. Natürlich ist das etwas „rudimentärer“ als einen richtigen Webserver zu verwenden, kann aber durchaus Sinn machen.

 

PowerShell-Webserver ist „leichtgewichig“ und einfach einzurichten

Die PowerShell ist eine sehr ressourcenschonende Skriptsprache, die auf jedem modernen Windows-System vorinstalliert ist. Das bedeutet, dass ein http-Webserver, der in PowerShell implementiert ist, immer ohne weiteren Aufwand genutzt werden kann. Im Gegensatz zu anderen Webservern wie dem Apache, die möglicherweise viel Overhead haben bzw. Installationsaufwand mit sich bringen, ist ein PowerShell-Webserver effizient und schnell einsatzbereit.

 

Flexibilität des PowerShell-Webservers

Außerdem bietet die PowerShell eine hohe Flexibilität und Anpassungsmöglichkeiten. Das bedeutet, dass der Webserver völlig nach deinen Bedürfnissen angepasst werden kann. Mit PowerShell kann man eigene Cmdlets und Funktionen schreiben, um den Webserver zu erweitern. Allerdings muss man hier vermutlich aufpassen, dass man das Rad nicht neu erfindet und am Ende einen Apache oder IIS in der PowerShell nachbaut. Wenn der Anwendungsfall zu komplex wird macht es vermutlich Sinn einen bereits existierenden vollwertigen Webserver einzusetzen.

 

Integration des PowerShell-Webservers mit anderen Microsoft-Produkten

Da die PowerShell von Microsoft entwickelt wurde, ist sie eng in andere Microsoft-Produkte integriert. Ebenfalls hat man von hier aus Zugriff auf das .Net-Framework und im Prinzip handelt es sich um eine vollständige Programmiersprache. Das bedeutet, dass man den Webserver nahtlos mit anderen Microsoft-Produkten wie Active Directory, Exchange Server und SharePoint nutzen kann.

Spannend ist in diesem Zusammenhang auch die Möglichkeit, die sich durch die Reaktion in der PowerShell auf Seitenaufrufe bzw. Interaktionen oder auch Parameter in der URL eröffnet. Hierdurch kann man beliebig Änderungen am System vornehmen oder alles andere machen was mit der PowerShell so möglich ist.

Hier ist  in Beispiel wie man einen Aufruf von „http://localhost:5001/?id=write“ nutzen kann um bei der Angabe dieses Parameters in der URL einen Text im PowerShell-Fenster auszugeben:

 

Fazit zur PowerShell als http-Webserver

Die Verwendung eines http-Webservers in PowerShell kann eine gute Option sein, wenn Sie einen leichtgewichtigen, einfach einzurichtenden, flexiblen und nahtlos in Microsoft-Umgebungen integrierbaren Webserver benötigen. Die PowerShell bietet alle notwendigen Werkzeuge und Funktionen, um einen robusten Webserver zu erstellen und zu verwalten. Wenn man also ein Windows-System verwendet und nur eine einfache Aufgabe für den Webserver hat, sollte man die Verwendung eines PowerShell-Webservers durchaus in Betracht ziehen.

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert