Webbasierte Windows-PowerShell-Konsole

Windows Praxis: PowerShell Web Access einrichten

29.04.2013 von Thomas Joos
Mit Windows Server 2012 wurde nicht nur die PowerShell 3.0 eingeführt, sondern auch eine Webschnittstelle für die PowerShell. Admins können Befehle oder Skripts über eine Konsole in einem Browser ausführen, auch vom Smartphone aus. Wie das funktioniert, erklärt dieser Artikel praxisnah in Schritt-für-Schritt-Anleitungen.

Damit Sie die Konsole per Webbrowser nutzen können, sind ein Windows-PowerShell-Web-Access-Gateway und ein Browser auf dem Client-Gerät erforderlich. Dieser muss JavaScript unterstützen und Cookies akzeptieren. Der Vorteil dieser Technik ist, dass Sie so die PowerShell auch von Geräten aus nutzen können, die diese nicht direkt unterstützen, wie zum Beispiel Tablets und Smartphones.

Mobiler Zugriff: Eine gestartete PowerShell-Sitzung über Windows Phone 8 zu Windows Server 2012 mit PowerShell Web Access

Nach der Installation und Konfiguration des Gateways können Benutzer mithilfe eines Webbrowsers auf eine Windows-PowerShell-Konsole zugreifen. Wenn ein Benutzer die sichere Windows-PowerShell-Web-Access-Website öffnet, kann er nach der erfolgreichen Authentifizierung eine webbasierte Windows-PowerShell-Konsole ausführen. Hier stehen alle Befehle und Cmdlets zur Verfügung, die Sie auch in einer normalen PowerShell-Sitzung nutzen können.

Damit können Sie per Smartphone oder Tablet auf die PowerShell von Servern zugreifen und so alle Cmdlets nutzen, die auf dem Server verfügbar sind.

PowerShell Web Access installieren

PowerShell Web Access setzt voraus, dass der Webserver (IIS), .NET Framework 4.5 und PowerShell 3.0 auf dem Server installiert sind, auf dem Sie das Gateway ausführen. Wenn Sie PowerShell Web Access mit dem Server-Manager oder in der PowerShell installieren, werden die erforderlichen Rollen und Features automatisch hinzugefügt:

1. Starten Sie den Server-Manager und klicken im Menü Verwalten auf Rollen und Features hinzufügen.

2. Wählen Sie auf der Seite Installationstyp auswählen die Option Rollenbasierte oder featurebasierte Installation aus. Klicken Sie auf Weiter.

Simpel: PowerShell Web Access installieren Sie über den Server-Manager als Feature.

3. Wählen Sie auf der Seite Zielserver auswählen einen Server aus dem Server-Pool aus, oder entscheiden Sie sich für eine Offline-VHD. Um eine Offline-VHD als Zielserver zu bestimmen, müssen Sie zuerst den Server festlegen, auf dem die VHD eingebunden werden soll. Bestimmen Sie danach die VHD-Datei.

4. Erweitern Sie auf der Seite Features auswählen des Assistenten Windows PowerShell und wählen dann Windows PowerShell Web Access aus.

5. Sie werden aufgefordert, erforderliche Features wie.NET Framework 4.5 und Rollendienste des Webservers (IIS) hinzuzufügen. Fügen Sie die erforderlichen Features hinzu, und setzen Sie den Vorgang fort.

Wenn Sie Windows PowerShell Web Access mit der PowerShell installieren, werden die Verwaltungs-Tools für den IIS nicht automatisch hinzugefügt:

Install-WindowsFeature -Name WindowsPowerShellWebAccess -ComputerName <Name des Servers> -IncludeManagementTools -Restart

Gateway für PowerShell Web Access konfigurieren

Nach der Installation von PowerShell Web Access besteht der nächste Schritt in der Einrichtung des Gateways für PowerShell Web Access. Das CMDlet Install-PswaWebApplication bietet eine schnelle Möglichkeit, PowerShell Web Access zu konfigurieren.

Es geht los: PISA wird in der PowerShell aktiviert.

Sie können mit der Option -UseTestCertificate auch ein selbst signiertes SSL-Zertifikat installieren. Verwenden Sie für eine sichere Produktionsumgebung aber besser ein gültiges SSL-Zertifikat, das von einer Zertifizierungsstelle signiert wurde. Über die IIS-Manager-Konsole ersetzen Sie das Testzertifikat durch ein signiertes Zertifikat. Hier gehen Sie vor wie bei jeder SSL-Website.

Sie können die Konfiguration mit Install-PswaWebApplication oder im IIS-Manager durchführen. Standardmäßig werden durch das CMDlet die Webanwendung, pswa, und der zugehörige Anwendungs-Pool (pswa_pool), im Standard-Website-Container installiert.

Der IIS-Manager bietet Konfigurationsoptionen, die für Webanwendungen verfügbar sind, zum Beispiel das Ändern der Portnummer oder des SSL-Zertifikats. Um eine Testumgebung einzurichten, geben Sie in der PowerShell den Befehl

Install-PswaWebApplication -UseTestCertificate

ein. Die Einstellungen können Sie danach jederzeit ändern.

Durch Ausführung des Cmdlets wird die PowerShell-Web-Access-Webanwendung im Standardwebsite-Container von IIS installiert. Die Website von PSWA erreichen Sie über den Link https://<Servername>/pswa.

Um die Webanwendung auf einer anderen Website zu installieren, müssen Sie den Website-Namen angeben, indem Sie die Option -WebSiteName nutzen, zum Beispiel so:

Install-PswaWebApplication -webApplicationName <Name> -useTestCertificate.

Benutzer für PowerShell Web Access berechtigen

Eine Anmeldung ist erst möglich, nachdem den Benutzern durch Hinzufügen von Autorisierungsregeln der Zugriff auf die Website gestattet wurde. Haben Sie das Gateway eingerichtet, können Sie die Webseite öffnen, indem Sie die Adresse https://<Servername>/pswa eingeben.

Zugangskontrolle: So sieht die Anmeldeseite zu PowerShell Web Access aus.

Nachdem Sie PowerShell Web Access installiert und das Gateway mit der Website und dem Zertifikat eingerichtet haben, müssen Sie den Benutzern den Zugriff auf die PowerShell über PowerShell Web Access gestatten. Führen Sie in einer PowerShell-Sitzung, die mit erhöhen Benutzerrechten (Als Administrator ausführen) geöffnet wurde, die folgenden Befehle aus:

$applicationPoolName = "<Name des Anwendungspools für PSWA>"

$authorizationFile = "C:\windows\web\powershellwebaccess\data\AuthorizationRules.xml"

c:\windows\system32\icacls.exe $authorizationFile /grant ('"' + "IIS AppPool\$applicationPoolName" + '":R') > $null

Anschließend lassen Sie sich mit

c:\windows\system32\icacls.exe $authorizationFile

die gesetzten Rechte anzeigen.

PowerShell-Web-Access-Authentifizierungsregeln sind Positivlistenregeln. Jede Regel entspricht einer Definition einer zugelassenen Verbindung zwischen Benutzern, Zielcomputern und bestimmten Windows-PowerShell-Sitzungskonfigurationen auf angegebenen Zielcomputern.

Für einen Anwender muss nur eine Regel zutreffen, damit er Zugriff erhält. Wenn ein User über die webbasierte Konsole Zugriff auf einen Computer erhält, kann sich der Anwender bei anderen Computern anmelden, die mit dem ersten Zielcomputer verbunden sind. Das sicherste Verfahren, Windows PowerShell Web Access zu konfigurieren, besteht darin, Usern nur den Zugriff auf eingeschränkte Sitzungskonfigurationen zu gewähren, die ihnen das Ausführen bestimmter Aufgaben ermöglichen.

PowerShell Web Access - Regeln für Benutzer erstellen

Add-PswaAuthorizationRule fügt Autorisierungsregeln hinzu. Remove-PswaAuthorizationRule entfernt eine angegebene Autorisierungsregel aus PowerShell Web Access. Get-PswaAuthorizationRule zeigt die erstellten Regeln an, Test-PswaAuthorizationRule wertet Autorisierungsregeln aus

PowerShell Web Access-Benutzer müssen immer einen Benutzernamen und ein Kennwort angeben, um ihr Konto auf dem Gateway zu authentifizieren. Ist ein Anwender am Gateway authentifiziert, werden die Autorisierungsregeln geprüft, um festzustellen, ob der User Zugriff auf den angeforderten Zielcomputer hat. Nach der erfolgreichen Autorisierung werden die Anmeldeinformationen des Benutzers an den Zielcomputer übergeben. Die Syntax für das Erstellen einer Regel lautet:

Add-PswaAuthorizationRule -UserName <Domäne\Benutzer | Computer\Benutzer> -ComputerName <Computername> -ConfigurationName <Sitzungskonfigurationsname>

Diese Autorisierungsregel erlaubt es einem bestimmten Benutzer, auf einen Computer im Netzwerk zuzugreifen. Der Zugriff ist auf eine bestimmte Sitzungskonfiguration beschränkt. Im folgenden Beispiel werden dem Benutzer administrator in der Domäne Contoso der Zugriff für die Verwaltung des Computers srv1.contoso.int und die Verwendung der Sitzungskonfiguration microsoft.powershell gestattet.

Add-PswaAuthorizationRule -UserName Contoso\administrator -ComputerName srv1.contoso.int -ConfigurationName microsoft.powershell

Überprüfen Sie, ob die Regel erstellt wurde, indem Sie das CMDlet Get-PswaAuthorizationRule ausführen. Mit

Remove-PswaAuthorizationRule -ID <Regel-ID>

löschen Sie eine Regel. Sie werden nicht aufgefordert, das Löschen der angegebenen Autorisierungsregel zu bestätigen. Die Regel wird gelöscht, sobald Sie (Eingabe) drücken.

Sitzungskonfigurationen

Für jede Windows-PowerShell-Sitzung wird eine Sitzungskonfiguration verwendet. Falls für eine Sitzung keine Sitzungskonfiguration angegeben wird, verwendet Windows PowerShell die integrierte Standardsitzungskonfiguration Microsoft.PowerShell. Die Standardsitzungskonfiguration schließt alle auf einem Computer verfügbaren Cmdlets ein.

Regulativ: Sie können die Autorisierungsdatei für PowerShell Web Access in der PowerShell anpassen.

Administratoren können den Zugriff auf alle Computer einschränken, indem sie eine Sitzungskonfiguration mit eingeschränktem Runspace (ein begrenzter Bereich von Cmdlets und Aufgaben, die die Benutzer ausführen können) definieren. Ein Benutzer, dem der Zugriff auf einen Computer gestattet wurde, kann Verbindungen mit anderen Computern herstellen, die mit dem ersten Computer verbunden sind. Durch das Definieren eines eingeschränkten Runspaces können Sie verhindern, dass Benutzer auf Computer außerhalb ihres zulässigen Windows-PowerShell-Runspaces zugreifen.

Die Sitzungskonfiguration kann mit Gruppenrichtlinien an alle Computer verteilt werden Autorisierungsregeln werden in einer XML-Datei gespeichert. Standardmäßig wird diese XML-Datei unter %windir%\Web\PowershellWebAccess\data\AuthorizationRules.xml gespeichert. Der Pfad zur XML-Datei mit den Autorisierungsregeln wird in der Datei powwa.config gespeichert, die wiederum unter %windir%\Web\PowershellWebAccess\data abgelegt ist.

Standardmäßig ist bei PowerShell Web Access die Anzahl gleichzeitiger Sitzungen je Benutzer auf drei Sitzungen begrenzt. Sie können die web.config-Datei der Webanwendung im IIS-Manager bearbeiten, um einen anderen Wert für die Anzahl der Sitzungen pro Anwender zu unterstützen. Die Datei web.config ist unter $Env:Windir\Web\PowerShellWebAccess\wwwroot\Web.config gespeichert.

Erledigt: Hier werden die Berechtigungen für die Autorisierungsdatei von PowerShell Web Access angezeigt.

Der Webserver (IIS) ist serienmäßig so konfiguriert, dass der Anwendungs-Pool neu gestartet wird, wenn Einstellungen bearbeitet werden. Der Anwendungs-Pool wird beispielsweise neu gestartet, wenn Änderungen an der Datei web.config vorgenommen werden. Die Sitzungen von Benutzern, die bei PowerShell Web Access angemeldet sind, werden getrennt, wenn der Anwendungs-Pool neu gestartet wird.

Nach 15-minütiger Inaktivität wird angemeldeten Benutzern eine Timeout-Meldung angezeigt. Wenn der User nicht innerhalb von fünf Minuten reagiert, wird die Sitzung beendet, und der Anwender wird abgemeldet. Die Zeitspanne für den Sitzungs-Timeout können Sie in den Website-Einstellungen im IIS-Manager ändern.

Bevor Sie PowerShell Web Access auf dem Gateway-Server deinstallieren, müssen Sie die PowerShell-Web-Access-Website und die entsprechenden Webanwendungen im IIS-Manager löschen. Wählen Sie im IIS-Manager die Website aus, auf der die PowerShell-Web-Access-Webanwendung ausgeführt wird. Klicken Sie im Bereich Aktionen unter Website verwalten auf Beenden. Danach können Sie die Seite entfernen. (mje)