Freigeben über


PowerShell-Snap-In: Erstellen von Websites, Webanwendungen, virtuellen Verzeichnissen und Anwendungspools

von Thomas Deml

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie Websites, Webanwendungen, virtuelle Verzeichnisse und Anwendungspools erstellen.

Einführung

Der IIS PowerShell-Namespace besteht aus Elementen wie Websites, Apps, virtuellen Verzeichnissen und Anwendungspools. Das Erstellen neuer Namespaceelemente und deren Verwaltung ist mit den integrierten PowerShell-Cmdlets sehr einfach.

Erstellen von Websites

Wenn Sie mit PowerShell vertraut sind, wissen Sie, dass das Cmdlet „New-Item“ verwendet wird, um neue Elemente in den verschiedenen PowerShell-Namespaces zu erstellen. Der Befehl New-Item c:\TestDirectory erstellt z. B. ein neues Dateisystemverzeichnis (die meisten verwenden den Alias MD oder MKDIR für New-Item). New-Item wird auch verwendet, um neue Websites im IIS PowerShell-Namespace zu erstellen.

Parameter

Wenn Sie ein neues Dateisystemverzeichnis erstellen, müssen Sie lediglich den Namens des Verzeichnisses als einziges Argument angeben. Leider reicht dies nicht aus, wenn Sie eine Website erstellen. Zum Erstellen einer Website sind zusätzliche Parameter wie der Dateisystempfad und Netzwerkbindungen erforderlich. Hier sehen Sie den Befehl zum Erstellen einer neuen Website, gefolgt von einem Dir-Befehl:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

Die Verwendung des Arguments „-physicalPath“ ist ziemlich einfach. Aber Sie fragen sich vielleicht, warum das Argument „-bindings“ so komplex aussieht.

Das verwendete Konstrukt ist eine Hashtabelle (hier erfahren Sie mehr über PowerShell-Hashtabellen). Innerhalb der Hashtabelle geben Schlüssel=Wertpaare die Einstellungen an, die die Attribute im Abschnitt „IIS-Sitebindungen“ widerspiegeln:

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

Hier ist nun der Grund, warum wir eine Hashtabelle verwenden: IIS-Konfiguration ist mit zusätzlichen Abschnitten und Attributen vollständig erweiterbar (siehe hier weitere Details). Sie können sich vorstellen, dass jemand das <Binding>-Element mit zusätzlichen Attributen erweitert. Schlüssel-Wert-Paare in einer Hashtabelle bieten die Flexibilität, diese neuen Attribute zu integrieren, ohne das IIS PowerShell-Snap-In vollständig neu schreiben zu müssen.

Die Syntax ist etwas komplexer. Wir denken darüber nach, einige typische Aufgaben wie das Erstellen von Websites mit zusätzlichen Funktionen oder Skripts in eine spätere Tech-Preview aufzunehmen.

Löschen von Sites

Hier erfahren Sie, wie Sie die soeben erstellte Site löschen.

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

Erstellen von Webanwendungen

Das Erstellen von Webanwendungen ist einfacher als das Erstellen von Sites. So geht‘s:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

Der einzige Parameter, den Sie angeben müssen, ist der Typ (-type), da Sie unter einer Website möglicherweise eine Anwendung oder ein virtuelles Verzeichnis erstellen möchten. Indem Sie den Parameter „-type“ angeben, weisen Sie das IIS-Snap-In an, eine Anwendung zu erstellen.

Um die Anwendung zu löschen, können Sie auch Remove-Item verwenden.

Erstellen virtueller Verzeichnisse

Zum Erstellen eines virtuellen Verzeichnisses verwenden Sie auch das Cmdlet „New-Item“. Erstellen wir nun ein virtuelles Verzeichnis unter der „Standardwebsite“, aber eine zweite unter der Webanwendung, die wir im vorherigen Schritt erstellt haben.

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

Erstellen von Anwendungspools

Aber es wird noch einfacher. Zum Erstellen eines neuen AppPools muss lediglich der Name angegeben werden.

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

Einfach, nicht war? Lassen Sie uns dies nun zu einem End-to-End-Szenario zusammensetzen.

Zusammenfassung

Im folgenden End-to-End-Szenario führen wir den folgenden Schritt aus:

  1. Erstellen Sie eine Reihe neuer Dateisystemverzeichnisse für die Sites, Webanwendungen und virtuellen Verzeichnisse, die wir später erstellen werden.
  2. Kopieren Sie einige sehr einfache Webinhalte in die neu erstellten Verzeichnisse.
  3. Erstellen eines neuen Anwendungspools
  4. Erstellen Sie eine neue Site, eine neue Anwendung und zwei neue virtuelle Verzeichnisse, und weisen Sie sie dem neu erstellten Anwendungspool zu.
  5. Fordern Sie den Webinhalt über den Webbrowser an.

Schritt 1: Erstellen neuer Verzeichnisse

Wir verwenden das Cmdlet „New-Item“, um vier neue Dateisystemverzeichnisse zu erstellen. Führen Sie die folgenden Befehle aus (verwenden Sie „md“ anstelle von „New-Item“, wenn Sie den Parameter „-type“ nicht angeben möchten):

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

Schritt 2: Kopieren von Inhalten

Jetzt schreiben wir einige einfache HTML-Inhalte in diese Verzeichnisse:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

Schritt 3: Erstellen eines neuen Anwendungspools

Erstellen Sie den neuen Anwendungspool „DemoAppPool“ für die neue Site, wenn Sie die im vorherigen Beispiel erstellte Datei gelöscht haben.

New-Item IIS:\AppPools\DemoAppPool

Hinweis

Das obige Cmdlet schlägt fehl, wenn das WebAdministration-Modul nicht importiert wurde. Dazu können Sie das folgende Cmdlet als ersten Schritt eines Skripts mit dem obigen Cmdlet hinzufügen:

Import-Module "WebAdministration"

Schritt 4: Erstellen neuer Sites, Webanwendungen und virtueller Verzeichnisse und Zuweisen zum Anwendungspool

Hier nun das Wichtigste. Wir erstellen DemoSite, DemoApp und zwei virtuelle Verzeichnisse – DemoVirtualDir1 befindet sich direkt unter DemoSite und DemoVirtualDir2 unter DemoApp. Wir weisen DemoSite und DemoApp dem DemoAppPool zu, den wir im vorherigen Schritt erstellt haben. DemoSite wird Port 8080 zugewiesen, um keinen Konflikt mit der „Standardwebsite“ zu verursachen.

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

Voila. Jetzt müssen wir nur noch den Webinhalt anfordern.

Schritt 5: Anfordern des Webinhalts

Sie können natürlich den Browser öffnen und http://localhost:8080/ und alle anderen URLs eingeben. Da es sich jedoch um eine exemplarische PowerShell-Vorgehensweise handelt, verwenden wir dafür PowerShell mit den .NET WebClient-Klassen:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

Wenn Sie es etwas spannender wollen, können Sie auch das Internet Explorer-Objekt selbst verwenden:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben Sie erfahren, wie Sie Websites, Webanwendungen, virtuelle Verzeichnisse und Anwendungspools mit PowerShell erstellen. Zusätzliche PowerShell-Features wurden verwendet, um ein funktionales End-to-End-Szenario zu erstellen.