PowerShell IIS-Meisterschaft: Websites erstellen und verwalten

Wenn Sie Windows Server verwalten, haben Sie wahrscheinlich mit Internet Information Services (IIS) gearbeitet. Websites sind eine der Hauptfunktionen von IIS und mit PowerShell können Sie IIS ganz einfach verwalten und automatisieren!

In diesem Artikel lernen Sie eine neue Methode kennen, wie Sie IIS mit PowerShell verwalten können. Mit den in diesem Artikel vorgestellten Techniken können Sie problemlos PowerShell IIS-Skripte erstellen und IIS-Websites verwalten.

Um IIS mit PowerShell zu verwalten, benötigen Sie eines von zwei PowerShell-Modulen – WebAdminstration oder IISAdminstration. In diesem Artikel wird das modernere IISAdministration-Modul behandelt. Das Begleitvideo zu diesem Artikel zeigt das ältere WebAdministration-Modul, wenn Sie eine alternative Methode sehen möchten.

Zu wissen, wie man sogar eine einfache Website für Ihr Unternehmen oder für die Welt im Allgemeinen verwaltet, wird Sie von Ihren Kollegen abheben. Die folgenden Abschnitte in diesem Artikel helfen Ihnen dabei, zu lernen, wie Sie eine Website in IIS erstellen und verwalten. Sie werden auch lernen, wie Sie Webanwendungs-Pools mit einigen PowerShell-Cmdlets verwalten können.

IISAdministration vs WebAdministration-Module

Sie haben zwei Möglichkeiten, um IIS zu verwalten. Sie können WebAdministration oder IISAdministration verwenden. Aber welches sollten Sie wählen?

Wenn Sie IIS 10.0 oder höher verwenden, bietet das neuere IISAdministration-Modul eine Vielzahl von Verbesserungen gegenüber dem älteren WebAdministration-Modul.

Hier sind einige Highlights:

  • IISAdministration-Cmdlets bieten eine bessere Unterstützung für die Pipeline und skalieren besser.
  • Verglichen mit den älteren, veralteten IIS WebAdministration-Cmdlets enthält IISAdministration effizienteren Code.
  • IISAdministration-Cmdlets sind einfacher und ermöglichen direkten Zugriff auf den Server-Manager.

In diesem Artikel wird der Fokus auf dem neueren IISAdministration-Modul liegen.

Voraussetzungen

Dieser Artikel ist praktisch orientiert. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen.

The Windows 10 “Turn Windows features on or off” dialogue

Es wird empfohlen, dass Sie mit den Grundlagen von HTML vertraut sind. Es wird einen Schritt geben, bei dem die Verwendung von HTML in den kommenden Beispielen eine Rolle spielt. Aber keine Sorge, Sie können den Code kopieren und einfügen!

Alle Beispiele in diesem Blogbeitrag wurden mit IIS 10.0 unter Windows 10 und PowerShell 7 Preview 6 erstellt. Die IISAdministration-Cmdlets sind für Windows Server 2016 & 2019 gleich und funktionieren mit Windows PowerShell 5.1.

Das waren die verwendeten Tools, nun die Ressourcen, die zum Mitmachen benötigt werden.

Installation des IISAdministration-Moduls

Sobald Sie die Voraussetzungen erfüllt haben, ist es an der Zeit, einige Einrichtungsarbeiten durchzuführen. Glücklicherweise gibt es nicht viel einzurichten, da das PowerShell-Modul, das Sie benötigen (IISAdministration), frei im PowerShell Gallery verfügbar ist.

Öffnen Sie eine erhöhte PowerShell-Konsole auf Ihrem Webserver und installieren Sie das Modul mit dem folgenden Befehl.

PS> Install-Module -Name 'IISAdministration'

Wenn Sie keinen Internetzugang haben, können Sie das Modul auf einem anderen Host herunterladen und in Ihr Modulverzeichnis kopieren. Schauen Sie sich die Dokumentation für den Save-Module-Befehl an.

Verfügbare Cmdlets entdecken

Wie bei jedem PowerShell-Modul, mit dem Sie möglicherweise nicht vertraut sind, sollten Sie eines der ersten Cmdlets verwenden, um den Bestand an Cmdlets eines Moduls zu entdecken: Get-Command. Mit dem Befehl Get-Command -Modul 'IISAdministration', wie unten gezeigt, können Sie sehen, was mit diesem Modul möglich ist.

Auch wenn Sie einige gängige Aktionen zum Erstellen von Websites lernen werden, geben Ihnen diese Befehle eine Vorstellung davon, was Sie sonst noch tun können.

Get-Command -Module ‘IISAdministration’ results

Jetzt haben Sie eine Liste verfügbarer Cmdlets. Es ist Zeit, eine Website zu erstellen.

Erstellen Ihrer ersten Website

Um mit einer Website arbeiten zu können, erstellen wir zunächst eine Website. Dazu ist der erste Schritt das Erstellen eines Verzeichnisses, um den Webinhalt zu speichern. Außerdem wird eine HTML-Datei in diesem Verzeichnis benötigt, damit IIS sie anzeigen kann. Dieses Verzeichnis dient als das Webverzeichnis, das in späteren Beispielen verwendet wird.

Erstellen des Webverzeichnisses und der Seite

Zunächst erstellen Sie ein Verzeichnis. Dafür können Sie das New-Item-Cmdlet verwenden. Der folgende Code erstellt ein Verzeichnis unter C:\MyWebsite.

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

Sie können mit dem obigen Code einen beliebigen Pfad wählen. Zur Vereinfachung werden generische Pfade verwendet.

Nachdem Sie das Verzeichnis erstellt haben, ist es Zeit, eine HTML-Datei zu erstellen, die als Startseite für Ihre neue Website dient.

Erstellen Sie jetzt eine Datei mit dem Namen index.html im Verzeichnis C:\MyWebsite wie unten gezeigt.

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

Sobald die Datei erstellt ist, öffnen Sie sie in Ihrem bevorzugten Editor und kopieren Sie den folgenden Code in das Dokument. Dieses HTML ist eine einfache Seite, die verwendet wird, um sicherzustellen, dass IIS ordnungsgemäß konfiguriert ist, wenn Sie fertig sind.

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

Erstellen einer IIS-Website

Es ist jetzt an der Zeit, die gerade erstellte Webseite für die Welt sichtbar zu machen. Dazu müssen Sie ein virtuelles Verzeichnis erstellen. Das virtuelle Verzeichnis enthält alle Assets und Ressourcen, die für die bereitgestellte Seite verwendet werden.

Standardmäßig erstellt IIS ein virtuelles Verzeichnis unter C:\inetpub\wwwroot. Das Verzeichnis enthält alle Standard-Webseiteninhalte und Ressourcen für IIS. Sie könnten das Standardverzeichnis C:\inetpub\wwwroot auch verwenden, um Ihre Dateien zu speichern, aber für diese Beispiele wird es nicht verwendet, um die Pfade so kurz wie möglich zu halten. Deshalb verwenden Sie stattdessen C:\MyWebsite.

Um ein neues virtuelles Verzeichnis (Website) zu erstellen, verwenden Sie das New-IISSite-Cmdlet. Mit diesem Cmdlet können Sie die IIS-Website erstellen.

In diesem Artikel erstellen Sie eine Website namens Mywebsite, die auf das Verzeichnis C:\MyWebsite zeigt und auf Port 8088 lauscht. Im folgenden Code-Schnipsel sehen Sie, wie Sie dies mit dem New-IISSite-Cmdlet tun können.

Das einzige, was möglicherweise verwirrend sein könnte, ist der Parameter BindingInformation. Dieser Parameter erlaubt nur Bindungssyntax. In diesem Beispiel erstellt New-IISSite eine Website, die an eine IP-Adresse gebunden ist (* entspricht 127.0.0.1), gefolgt vom TCP-Port, auf dem gehört wird, und beliebigen HTTP-Headern.

Der Bindungssyntax kann als Protokoll, gefolgt von Quelle:Port:Ziel erklärt werden. In diesem Beispiel haben Sie IIS so konfiguriert, dass er HTTP-Anfragen von JEDEM () IP-Adresse auf Port 8088 empfängt und das Ziel die lokale Adresse ist.*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

Sobald die Website erstellt wurde, können Sie Get-IISSite ausführen, um zu überprüfen, wie sie aussieht, wie unten gezeigt.

Creating a New Website in IIS

Standardmäßig wird die Website-Konfiguration gestartet und Ihr Webhost beginnt, diese HTTP-Anfragen zu bedienen. Öffnen Sie Ihren bevorzugten Browser und navigieren Sie zur lokalen Maschine unter Verwendung des Ports 8088. Sie sollten jetzt die zuvor erstellte Webseite sehen.

MyWebSite IIS site in a web browser

Herzlichen Glückwunsch! Sie haben gerade Ihre erste Website auf IIS mithilfe von PowerShell eingerichtet!

Jetzt, da Sie eine Website haben, die läuft, ist es an der Zeit, zu lernen, wie Sie Ihre Website und den IIS-Server verwalten können.

Verwalten der IIS-Website

Sobald eine Website läuft, müssen Sie wahrscheinlich häufige Aktionen wie das Anhalten und Starten der Website durchführen. Wenn beispielsweise Updates an der Website vorgenommen werden müssen, müssen Sie manchmal die Website neu starten.

Zur Verwaltung der Website in PowerShell stehen Ihnen zwei Cmdlets zur Verfügung – Start-IISSite und Stop-IISSite. Diese beiden Cmdlets funktionieren ähnlich wie die Cmdlets Stop-Service und Start-Service.

Das Anhalten einer Website ähnelt dem Anhalten eines Windows-Dienstes. Sie verhindern oder ermöglichen den Zugriff auf die über einen eindeutigen Port von IIS bediente Website über ein Protokoll. Dabei stoppen Sie jedoch nicht den IIS-Host. Websites können einzeln angehalten und gestartet werden.

Das Stoppen einer einzelnen Website

Um eine IIS-Website zu stoppen, verwenden Sie das Cmdlet Stop-IISSite. Standardmäßig sollte die zuvor erstellte Website im Status Gestartet sein. Wenn Sie die Website stoppen und somit den Zugriff auf MeineWebsite verhindern möchten, führen Sie den folgenden Code aus. Dieser Code stoppt die Website MeineWebsite und verhindert, dass sie von IIS bereitgestellt wird. Nachdem Sie die Website gestoppt haben, können Sie nicht mehr darauf zugreifen.

PS> Stop-IISSite -Name "MyWebsite"

Ein Beispiel für die Überprüfung des Zustands der Website als Gestartet, das Stoppen und erneute Überprüfung des Zustands wird unten gezeigt. In diesem Beispiel:

  1. Werden der Status der Website MeineWebsite mit Get-IISSite abgerufen.
  2. Wird das Cmdlet Stop-IISSite gegen die Website MeineWebsite ausgeführt. Mit diesem Cmdlet wird der Zugriff auf die Website beendet. Da es sich um eine operative Änderung handelt, wird eine Bestätigung angefordert.
  3. Wird erneut Get-IISSite ausgeführt, um zu überprüfen, ob die Website MeineWebsite gestoppt wurde, indem der Status Gestoppt angezeigt wird.
Getting, stopping, and confirming MyWebsite state

Das Stoppen aller Websites

Oben haben Sie eine einzelne Website gestoppt, aber Sie können auch alle Websites genauso einfach stoppen. Durch Verwendung der Pipeline und Weiterleiten der Ausgabe von Get-IISSite an Stop-IISSite wird PowerShell alle Websites auflisten und sie alle stoppen. Im folgenden Beispielcode wird der optionale Switch-Parameter Verbose verwendet, um mehr Informationen anzuzeigen.

Get-IISSite | Stop-IISSite -Verbose
Stopping all IIS sites with PowerShell

Sie können auch alle Websites in IIS stoppen, indem Sie den W3SVC oder den World Wide Web Publishing Service stoppen. Das Stoppen des Windows-Dienstes führt zum Herunterfahren von IIS und verhindert das Bereitstellen aller Websites. Wenn Sie dies tun, können die Websites jedoch immer noch als „Gestartet“ angezeigt werden.

Starten einer einzelnen Website

Sagen wir, Sie haben einige Änderungen an der Website MyWebsite vorgenommen und müssen sie wieder starten. Es ist an der Zeit, den Befehl Start-IISSite zu verwenden. Geben Sie einfach den Namen an, genau wie Sie es mit dem Befehl Stop-IISSite getan haben.

PS> Start-IISSite -Name 'MyWebsite'

Wenn Sie den Befehl ausführen, können Sie den Zustand erneut mit Get-IISSite überprüfen. Dabei sollten Sie eine ähnliche Ausgabe wie im folgenden Screenshot sehen.

Checking the status of MyWebsite using Get-IISSite and starting the site with Start-IISSite

Und jetzt sollte Ihre Website wieder unter http://localhost:8088 verfügbar sein, wenn Sie Ihren Browser aktualisieren.

Alle Websites starten

Ähnlich wie beim Stoppen aller Websites können Sie auch alle Websites auf Ihrem IIS-Host mit Hilfe der Pipeline starten.

PS> Get-IISSite | Start-IISSite

Erneut werden alle bereitgestellten IIS-Websites abgerufen und mit Hilfe der Pipeline einzeln gestartet. Ihre Ausgabe sollte ähnlich aussehen wie im folgenden Screenshot.

Using the pipeline to start all sites on host

Verwalten von Web-Bindungen

Es ist nun an der Zeit, einige gängige administrative Aufgaben für die Website MyWebsite durchzuführen. Eine der häufigsten Aufgaben ist das Ändern der Web-Bindungen.

Als Sie die MyWebsite Seite erstellt haben, haben Sie die Bindungssyntax von *:8088: verwendet. Diese Syntax bedeutete, dass auf der IP-Adresse 127.0.0.1, auf Port 80 ohne HTTP-Header gehört wurde. Angenommen, Sie haben nun entschieden, dass die Seite stattdessen auf Port 9000 hören soll. Um dies zu tun, müssen Sie die Site-Bindungen ändern.

Vorhandene Bindungen inspizieren

Bevor Sie die Bindungen der Seite ändern können, sollten Sie zunächst die aktuelle Konfiguration überprüfen. Eine Möglichkeit, dies zu tun, besteht darin, die von Get-IISSite zurückgegebene Binding-Eigenschaft zu inspizieren. Beachten Sie im nächsten Codeausschnitt, wie dies funktioniert. In dem Ausschnitt fragt Get-IISSite die MyWebSite Seite ab und gibt nur die Bindings-Eigenschaft zurück.

PS> (Get-IISSite -Name 'MyWebsite').Bindings

Wenn Sie nur die Bindings-Eigenschaft inspizieren, gibt PowerShell ein Objekt mit einigen verschiedenen Informationen zurück, wie unten gezeigt.

Example 1: Finding binding information

Wenn Sie nur die Bindungsinformationen sehen möchten, können Sie speziell auf die bindingInformation-Eigenschaft verweisen, wie unten gezeigt.

Example 2: Finding binding information

Entfernen von Bindungen

Wenn Sie ändern möchten, auf welchem Port eine Seite hört, müssen Sie zunächst die bestehende Bindung entfernen, die sie an diesen Port bindet. Um die Bindung zu entfernen, müssen Sie zunächst die Seite stoppen.

PS> Stop-IISSite -Name 'MyWebsite'

Sobald die Seite gestoppt ist, können Sie nun die bestehende Bindung entfernen, die die MyWebsite Seite an Port 8088 bindet. Um dies zu tun, können Sie das Remove-IISSiteBinding cmdlet verwenden.

Um die zuvor definierte Bindung für MyWebsite zu entfernen, können Sie unten ein Beispiel für die Verwendung von Remove-IISSiteBinding sehen, um genau das zu tun. Unten geben Sie den Namen der Website an und geben die zuvor entdeckte Bindungssyntax an.

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

Wenn Sie den Code ausführen, werden Sie aufgefordert, Ihre Entscheidung zu bestätigen, da Sie etwas Zerstörerisches tun, wie unten gezeigt.

Removing site binding using Verbose parameter

Es gibt keine Begrenzung für die Anzahl der Bindungen, die Sie haben können. Sie könnten genauso gut die ursprüngliche Bindung beibehalten und TCP-Port 9000 als neue Bindung hinzufügen.

Jetzt können Sie erneut Get-IISSite -Name 'MyWebsite' ausführen. Sie werden feststellen, dass die Bindungsinformationen entfernt wurden, wie durch den leeren Wert unter Bindings angezeigt.

Confirming the old bindings were removed

Auch wenn die Website veröffentlicht ist, weiß IIS nicht, wie der Datenverkehr zu Ihrer Website geroutet werden soll.

Es ist wichtig, mindestens eine Bindung Ihrer Website zuzuweisen. Um Ihnen die Bedeutung zu zeigen, versuchen Sie erneut, zu http://localhost:8088/index.html zu navigieren. Wenn Sie den Mozilla Firefox Webbrowser verwenden, sehen Sie möglicherweise diese Meldung unten.

Can’t establish a connection

Erstellen neuer Bindungen

In dem letzten Abschnitt haben Sie die einzige Bindung entfernt, die MyWebsite hatte. Obwohl dies die Website unterbrochen hat, handelt es sich nur um ein vorübergehendes Problem. Es ist an der Zeit, dieses Problem zu beheben, indem Sie eine neue Bindung erstellen.

Verwenden Sie das Cmdlet New-IISSiteBinding, um eine neue Bindung zu erstellen. Da Sie jetzt Port 9000 an die Website MyWebsite binden müssen, geben Sie die korrekte Bindungssyntax wie unten angezeigt an.

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

Sobald Sie die neue Bindung erstellt haben, starten Sie die Website erneut mit Start-IISSite. Beachten Sie, dass IIS die Website herunterfahren musste, um diese neue Bindung zu erstellen.

Wenn die Website erneut gestartet wird, sollten Sie jetzt über den Port 9000 darauf zugreifen können. Um dies zu überprüfen, öffnen Sie Ihren bevorzugten Webbrowser und navigieren Sie zu http://localhost:9000. Sie sollten jetzt wieder die Webseite unter Port 9000 sehen können.

Same page, different TCP port

Entfernen einer Website

Wenn Sie gerade ein Tutorial durchgeführt haben und nicht beabsichtigen, die Website MyWebsite dauerhaft zu behalten, ist es Zeit, sie zu bereinigen. Verwenden Sie das Cmdlet Remove-IISSite, um eine Website zu entfernen.

Das Entfernen einer IIS-Site kann ein riskanter Vorgang sein, insbesondere wenn Sie eine Site entfernen, auf der andere Produktions-Websites gehostet werden. Um sicherzustellen, dass Sie die richtige Site entfernen, empfiehlt es sich, den gängigen WhatIf-PowerShell-Parameter zu verwenden. Mit diesem Parameter können Sie überprüfen, was passiert wäre, wenn der Befehl tatsächlich ausgeführt worden wäre.

Sie können ein Beispiel für das Entfernen der Site MyWebsite mit dem WhatIf-Parameter unten sehen.

Remove-IISSite -Name 'MyWebSite' -WhatIf
Being careful with destructive cmdlets by using -WhatIf !

Wenn alles gut aussieht, lassen Sie die Sicherheitsleiste los und führen Sie den Code erneut aus, diesmal ohne den -WhatIf-Parameter.

Bei Verwendung des Remove-IISSite-Cmdlets wird die Site nicht gelöscht. Sie wird aus der IIS-Konfiguration entfernt. Die Dateien für die Website bleiben erhalten.

Zusammenfassung

In diesem Artikel haben Sie gelernt, eine Website mithilfe des IISAdministration-Moduls zu erstellen. Sie haben gesehen, wie administrative Vorgänge durchgeführt werden, die für die Instandhaltung einer Website erforderlich sind. Sie haben jetzt genug Grundlagenwissen, um mit jedem modernen IIS-Host unter Verwendung von PowerShell zu arbeiten!

Weiterführende Informationen

Source:
https://adamtheautomator.com/powershell-iis/