Hosting
Sie können PowerShell Universal als Windows-Dienst, in IIS, als Azure Web App oder einfach als eigenständige Anwendung hosten. Wenn Sie unter Windows arbeiten, empfehlen wir entweder einen Windows-Dienst oder IIS.
Hosting als Windows-Dienst
Um als Windows-Dienst zu hosten, können Sie das PowerShell Universal MSI herunterladen und installieren. Das MSI installiert den PowerShell Universal-Dienst automatisch und startet ihn. Jobs werden standardmäßig unter dem Systemkonto ausgeführt, aber Sie können den Dienst nach der Installation so konfigurieren, dass er unter einem anderen Konto ausgeführt wird.
Nachdem das MSI die Einrichtung abgeschlossen hat, öffnet sich Ihr Standard-Webbrowser unter http://localhost:5000 zur Anmeldung. Die Standard-Anmeldeinformationen sind auf Admin und ein beliebiges Passwort festgelegt.
Einen Windows-Dienst manuell konfigurieren
Sie müssen das MSI nicht verwenden, um Universal als Windows-Dienst zu konfigurieren. Sie können dies auch manuell mit dem folgenden PowerShell-Skript tun.
New-Service -Name "PowerShellUniversal" -BinaryPathName "Universal.Server.exe --service" -Description "PowerShell Universal server service." -DisplayName "PowerShell Universal" -StartupType Automatic
Start-Service PowerShellUniversalHosting in Azure
Lesen Sie unseren Azure-Hosting-Leitfaden.
Manuelles Hosting
Sie können den Universal-Server auch als eigenständige Anwendung hosten. Führen Sie einfach die Universal.Server.exe aus dem Binärverzeichnis aus, um die Kestrel-Webserver-Implementierung in ASP.NET Core zum Starten des Webservers zu nutzen.
Webserver-Konfiguration
Port und Listening-Adresse festlegen
Sie können den Port des Universal-Servers festlegen, indem Sie die Datei appsettings.json ändern. Wir empfehlen, eine appsettings.json-Datei im Standard-Konfigurationsordner zu erstellen.
Windows
%ProgramData%\PowerShellUniversal
Linux
%HOME%/.PowerShellUniversal
Um den Port festzulegen, ändern Sie den Abschnitt der Kestrel-Endpunkte in der appsettings.json. Standardmäßig ist die Konfiguration so definiert, dass auf Port 5000 und auf jeder Adresse gelauscht wird.
HTTPS konfigurieren
Um HTTPS zu konfigurieren, können Sie die Datei appsettings.json so anpassen, dass ein bestimmtes Zertifikat und ein bestimmter Port verwendet werden. Die folgende Konfiguration verwendet die Datei testCert.pfx und testPassword und lauscht auf Port 5463.
PFX-Zertifikate
Zertifikatspeicher
Um ein Zertifikat an einem bestimmten Speicherort und in einem bestimmten Speicher zu konfigurieren, können Sie eine Konfiguration wie diese verwenden. Wenn Sie das Zertifikat nach dem Antragstellernamen auswählen, stellen Sie sicher, dass Sie den Common Name ohne das Präfix CN= verwenden.
Der Speicherort kann entweder CurrentUser oder LocalMachine sein.
Zertifikatspeicher nach Fingerabdruck
Ab Version 3.4 können Sie den Fingerabdruck anstelle des Antragstellers verwenden.
PEM- und Key-Zertifikate
Einige Anbieter wie Let's Encrypt und GoDaddy stellen Zertifikate als PEM- und Key-Textdateien aus. Sie können diese Arten von Zertifikaten direkt mit dem Kestrel-Webserver verwenden. Sie müssen den Abschnitt HttpsFromPem innerhalb der Endpoints für Kestrel angeben.
Berechtigungen
Unter Windows benötigt der Benutzer, der den PowerShell Universal-Dienst ausführt, Zugriff auf das Zertifikat, um HTTPS ordnungsgemäß zu unterstützen. Dies ist typischerweise ein Problem, wenn der Dienst ein Group Managed Service Account verwendet. Sie können das folgende PowerShell-Skript verwenden, um die richtigen Berechtigungen zu erteilen.
Protokoll
Standardmäßig lauscht Universal auf HTTP1 und HTTP2. Sie können die Protokolle, auf die der Server lauscht, anpassen, indem Sie die Eigenschaft Protocols festlegen. Beispielsweise können Sie die Unterstützung für HTTP1 und HTTP2 mit der folgenden Einstellung gezielt festlegen.
Einige Versionen von Windows Server (wie 2012R2) unterstützen HTTP2 nicht. Um die HTTP2-Unterstützung zu deaktivieren, stellen Sie den Listener so ein, dass er nur auf HTTP1 lauscht.
Eine vollständige Liste der Listening-Optionen finden Sie in der ASP.NET Core-Dokumentation.
Sicherheits-Header
Organisationen können verlangen, dass PowerShell Universal bestimmte Sicherheits-Header in HTTP-Antworten des Servers bereitstellt. Dazu können gehören:
Strict-Transport-Security
Content-Security-Policy
X-Frame-Options
X-Content-Type-Options
X-XSS-Protection
Referrer-Policy
Sie können den Abschnitt Kestrel \ Headers verwenden, um diese Werte zu definieren.
Seien Sie beim Konfigurieren dieser Header vorsichtig, da sie das Verhalten jeder von PowerShell Universal zurückgegebenen Webanfrage ändern.
Beispiel: Selbstsigniertes Zertifikat
In diesem Beispiel zeigen wir, wie ein selbstsigniertes Zertifikat erstellt und mit PowerShell Universal verwendet wird.
Erstellen Sie zunächst ein selbstsigniertes Zertifikat und speichern Sie es in Ihrem lokalen Computerspeicher. Sie müssen PowerShell als Administrator ausführen. Der lokale Computerspeicher ist erforderlich, da PowerShell Universal möglicherweise als Dienst und nicht unter Ihrem Konto ausgeführt wird.
Als Nächstes müssen Sie PowerShell Universal so konfigurieren, dass es das Zertifikat verwendet. Dies können Sie erreichen, indem Sie die Datei appsettings.json in %ProgramData%\PowerShellUniversal bearbeiten oder erstellen. Diese Datei sollte bereits vorhanden sein, wenn Sie mit dem MSI-Installationsprogramm installiert haben. Der Inhalt der Datei sollte den DNS-Namen Ihres Zertifikats und den Speicherort enthalten.
Für selbstsignierte Zertifikate müssen Sie die Option AllowInvalid einbeziehen.
Nachdem Sie die Datei appsettings.json aktualisiert haben, starten Sie den PowerShell Universal-Dienst neu. Sie sollten nun unter https://localhost auf Ihre PowerShell Universal-Website zugreifen können.
Siehe auch
Zuletzt aktualisiert
War das hilfreich?