Freigeben über


Einführung in Windows PowerShell und IIS 7.0

von Saad Ladki

Einführung

Windows PowerShell ist die Shell und Skriptsprache von Microsoft. Dieser kurze Artikel bietet eine kurze Übersicht über Windows PowerShell und IIS. In diesem Artikel werden Ihnen die Grundlagen von Windows PowerShell vermittelt. Dabei erfahren Sie mehr über die Beziehung zwischen Windows PowerShell und IIS und über einige Möglichkeiten, mit denen Windows PowerShell das Ausführen von IIS-Verwaltungsaufgaben vereinfacht.

Die hier vorgestellten Informationen sind für IT-Administratoren, Softwareentwickler, Softwaretester und Manager hilfreich. Selbst Skeptiker werden von den praktischen Anwendungsmöglichkeiten des Windows PowerShell-Tools überzeugt.

Informationen zu Windows PowerShell

Windows PowerShell ist die umfassende Shellumgebung und Skriptsprache der nächsten Generation von Microsoft. Betrachten Sie Windows PowerShell als maßgebliches Upgrade zur alten cmd.exe-Befehlsshell und zu den alten BAT-Dateien. Benutzer wundern sich möglicherweise, warum es eine neue Befehlsshell gibt, wenn Cmd.exe gut funktioniert. Außerdem ist der Zeitaufwand zu groß, um eine weitere Skriptsprache zu lernen. Windows PowerShell ist eine Verbesserung gegenüber früheren Technologien für das Befehlszeilenskripting von Microsoft. Das bedeutet, dass Windows PowerShell für einfache und komplexe Aufgaben einfacher zu verwenden ist. Darüber hinaus ist PowerShell überraschend einfach zu erlernen.

Zu den Verbesserungen von Windows PowerShell gehört Folgendes:

  • Eine aktualisierte und konsistente Skriptsprache
  • Intrinsische Funktionen für reguläre Ausdrücke
  • Die Möglichkeit zum Aufrufen von .NET Framework, WMI-Erweiterungen und der Windows-Registrierung

Dieser Abschnitt bietet konkrete Beispiele und hebt einige Features von Windows PowerShell hervor. In den folgenden Abschnitten wird anschließend erläutert, wie Windows PowerShell zusammen mit IIS funktioniert.

Ein Beispiel soll Ihnen einen ersten Eindruck von Windows PowerShell vermitteln. Betrachten Sie den Screenshot in Abbildung 1.

Screenshot of example PowerShell command prompt window.

Abbildung 1: Grundlagen von Windows PowerShell

Beachten Sie zunächst, dass die Shell in Windows PowerShell wie eine herkömmliche Windows-Eingabeaufforderung aussieht. Die Verwendung von Windows PowerShell fühlt sich nach einer kurzen Eingewöhnungsphase schnell ganz normal an.

Der erste Befehl lautet:

PS C:\> set-location Data

Dadurch wird ein Windows PowerShell-Cmdlet (gesprochen als „command-let“) aufgerufen, mit dem das aktuelle Arbeitsverzeichnis von C:\ in C:\Data geändert wird. Das ist die funktionale Entsprechung des alten cd-Befehls (change directory). Möglicherweise bemerken Sie, dass es einen zu großen Aufwand darstellt, bei jeder Änderung des aktuellen Verzeichnisses set-location eingeben zu müssen. Diese Beobachtung ist korrekt.

Windows PowerShell verfügt über eine umfangreiche Reihe von Aliasen für Tastaturkurzbefehlen, die Sie verwenden können. Für das Cmdlet set-location werden sl (eine gekürzte Version des vollständigen Cmdlet-Namens) und cd (die „alte“ Methode) als Aliase verwendet. In diesem Artikel wird die Vollversion der Cmdlet-Namen verwendet, um die Lesbarkeit zu erleichtern.

Der zweite Befehl lautet:

PS C:\Data> get-childitem Pow*

Dadurch werden die Inhalte im aktuellen Verzeichnis aufgelistet, die mit „Pow“ beginnen. Bei Windows PowerShell werden Groß-/Kleinbuchstaben nicht beachtet. Sie können also Get-ChildItem oder GET-ChildItem eingeben. In diesem Artikel werden ausschließlich Kleinbuchstaben verwendet. Für das Cmdlet get-childitem werden dir (für Windows-Benutzer) und ls (für Unix-Benutzer) sowie gci als Aliase verwendet, um die Eingabe zu erleichtern.

Verwenden Sie als Nächstes das Cmdlet copy-item, um das Windows PowerShell-Verzeichnis einschließlich aller Unterverzeichnisse in ein neues Verzeichnis namens PSBackup zu kopieren:

PS C:\Data> copy-item 'PowerShell' 'C:\Data\PSBackup' -recurse –force

Löschen Sie daraufhin mithilfe des Cmdlets remove-item sofort das neu erstellte Verzeichnis und alle zugehörigen Inhalte:

PS C:\Data> remove-item PSBackup –recurse

Der nächste Befehl verwendet das Cmdlet get-content, um den Inhalt der Datei „Hello.txt“ abzurufen und diesen Inhalt anschließend in einer neuen „HelloCopy.txt“-Datei im aktuellen Verzeichnis zu speichern, indem der Inhalt (mit dem Zeichen „|“) an das Cmdlet out-file weitergereicht wird:

PS C:\Data> get-content 'Hello.txt' | out-file '.\HelloCopy.txt'

Der nächste Befehl verwendet get-content, um den Inhalt der neuen Datei anzuzeigen:

PS C:\Data> get-content HelloCopy.txt

Das Cmdlet get-content entspricht ungefähr den Befehlen type (Windows) oder cat (Unix). Beenden Sie die Minidemo, indem Sie das Alias sl verwenden, um das Arbeitsverzeichnis in das Stammlaufwerk zu ändern:

PS C:\Data> sl \

Wäre Windows PowerShell jedoch ausschließlich darauf beschränkt, gewöhnliche Aufgaben zur Navigation und Manipulation von Dateisystemen auszuführen, bestünde kein Grund dazu, den Rest dieses Artikels zu lesen. Eine kurze, einen Absatz lange Einführung könnte zu dieser falschen Annahme führen. Windows PowerShell bietet jedoch viele Vorteile gegenüber vielen aktuellen Shellumgebungen.

Zum Abschluss dieser Einführung sollte erwähnt werden, dass für Windows PowerShell Vieles neu gelernt werden muss. Neue Technologien sind nutzlos, es sei denn, sie können schnell erlernt werden. Programmierer bezeichnen das als Erlernbarkeit von Prozessen. Windows PowerShell wurde mit hervorragenden Eigenschaften für die Erlernbarkeit entwickelt, die die Einlernphase erheblich einfacher gestalten.

Sie können beispielsweise eine Liste aller Cmdlets abrufen, indem Sie in der Windows PowerShell-Eingabeaufforderung einfach get-command eingeben. Sie können außerdem detaillierte Informationen zu einem bestimmten Cmdlet abrufen, indem Sie get-help gefolgt vom Namen des Cmdlets eingeben. Die umfangreichen Erfahrungen beim Vermitteln der Funktionsweise von Windows PowerShell an technische Fachkräfte und Manager haben gezeigt, dass die meisten technischen Fachkräfte bereits nach einem Trainingstag mit Windows PowerShell vertraut sind.

Windows PowerShell in einer typischen IIS-Umgebung

Der vorherige Abschnitt dieses Artikels hat eine kurze, grundlegende Übersicht über Windows PowerShell geboten. Ein echter Vorteil der Verwendung von Windows PowerShell ist jedoch auf die Fähigkeit von Windows PowerShell zurückzuführen, mit IIS interagieren und diesen Dienst verwalten zu können. Technische Fachkräfte, die diesen Artikel lesen, werden bei Behauptungen wie „das Neueste und Beste“ möglicherweise skeptisch. In diesem Artikel wird die Leistungsfähigkeit von Windows PowerShell bündig beschrieben: Viele IIS-Verwaltungsaufgaben können mit Befehlen und Skripts von Windows PowerShell sowie den GUI-Tools von IIS ausgeführt werden.

Mit IIS sind Sie nun in der Lage, viele Verwaltungsaufgaben über eine der folgenden Methoden auszuführen:

  • Grafische Benutzeroberfläche (GUI)
  • Interaktive Windows PowerShell-Befehle
  • Windows PowerShell-Skripts

Benutzer mit erheblicher Erfahrung beim Verwalten von Serversoftware mit Shells und Skripts benötigen keine weitere Motivation. Doch die Benutzer, die daran gewöhnt sind, ausschließlich GUI-Tools zu verwenden, wundern sich möglicherweise, was besonders daran sein soll, IIS über eine Befehlszeile oder ein Skript zu verwalten, wenn sie das bisher auf zufriedenstellende Weise über MMC erledigen konnten. Am Ende dieses Artikels werden sechs wesentliche Vorteile der Verwaltung von IIS mithilfe von Windows PowerShell erläutert.

Die folgenden Windows PowerShell-Beispiele basieren auf diesem Artikel: Webcast mit Windows PowerShell-Architekt Jeffrey Snover und IIS Product Unit Manager Bill Staples.

Angenommen, Sie möchten Dienste im Zusammenhang mit IIS untersuchen, die auf Ihrem Computer ausgeführt werden. Das ist eine sehr häufige Aufgabe. Ein GUI-Ansatz hierfür besteht darin, MMC zu starten, die Kategorie „Dienste und Anwendung“ zu erweitern und anschließend die Kategorie „Dienste“ auszuwählen. Das Ergebnis sieht wie der Screenshot in Abbildung 2 aus.

Screenshot of the Computer Management Window. Services and Applications expanded. Services Category highlighted.

Abbildung 2: Verwenden von MMC zum Abrufen von Dienstinformationen

Das Auflisten von Windows-Diensten mit Windows PowerShell ist einfach. Verwenden Sie in der Windows PowerShell-Eingabeaufforderung beispielsweise das Cmdlet get-service:

PS C:\> get-service

Diese Methode ist zwar nicht gerade überzeugend, nehmen Sie jedoch an, Sie möchten ausschließlich Dienste auflisten, die mit dem Buchstaben „w“ beginnen, und diese Dienste nach dem Status sortieren. Eine Möglichkeit hierfür besteht in Folgendem:

PS C:\> get-service -include w* | sort-object -property status

Sie können diesen Befehl folgendermaßen interpretieren: Alle Windows-Dienstinformationen werden abgerufen, diese werden jedoch daraufhin gefiltert, um lediglich die Dienste einzuschließen, deren Name mit dem Buchstaben „w“ beginnt. Schließlich werden diese Ergebnisse nach dem Dienststatus sortiert (Running, Stopped oder Paused). Das Ergebnis sieht wie der Screenshot in Abbildung 3 aus.

Screenshot of PowerShell window displaying results of service status information.

Abbildung 3: Verwenden von Windows PowerShell zum Abrufen von Dienstinformationen

Wie im vorherigen Abschnitt erwähnt, können Sie gekürzte PowerShell-Befehle eingeben. Der vorherige Befehl kann auf Folgendes gekürzt werden:

PS C:\> gsv w* | sort status

In diesem Beispiel handelt es sich bei gsv um ein Alias für get-service. Dieser nutzt die Tatsache, dass sich die Option -include in der ersten Parameterposition befindet, wobei sort als Alias für das Cmdlet sort-object verwendet wird. Die Option -property befindet sich an der ersten Parameterposition. Angenommen, Sie möchten den World Wide Web-Veröffentlichungsdienst beenden. Ohne PowerShell können Sie mit der rechten Maustaste auf den W3SVC-Dienst klicken, um das Kontextmenü abzurufen, und auf das Element „Beenden“ zu klicken. Mit Windows PowerShell können Sie den Befehl ausführen:

PS C:\> stop-service -servicename w3svc

Dieser lautet in gekürzter Form:

PS C:\> spsv w3svc

Eine weitere häufige Aufgabe besteht darin, die Prozesse zu untersuchen, die auf einem Computer ausgeführt werden. Zu diesem Zeitpunkt können Sie bereits einschätzen, wie Sie diese Aufgabe mithilfe von Windows PowerShell ausführen können. Durch das einheitliche und logische Benennungsschema von Cmdlets in Windows PowerShell gestaltet sich das Erraten von Befehlen einfach und nicht entmutigend:

PS C:\> get-process

Angenommen, Sie möchten ausgeführte Prozesse nach der Anzahl der Handles anzeigen, die den einzelnen Prozessen gehören:

PS C:\> get-process | sort-object -property handles

Sie können diese Informationen einfach über das GUI-basierte Tool Task-Manager von Windows abrufen. Ziehen Sie jedoch die Funktionsweise dieser drei Windows PowerShell-Befehle in Erwägung:

PS C:\> $p = get-process
PS C:\> $result = $p | measure-object -property handles -sum -average -max
PS C:\> $result | out-file '.\ProcessHandleStats.txt'

Der erste Befehl ($p = get-process) ruft alle Informationen zu Prozessen ab, die derzeit auf dem Hostcomputer ausgeführt werden, und speichert diese Informationen in der Variablen $p.

Der zweite Befehl ($result = $p | measure-object -property handles -sum -max) sendet die erfassten Prozessinformationen an das Cmdlet measure-object, das die Summe, den Durchschnitts- und den Maximalwert für alle Handles berechnet, die von den derzeit ausgeführten Prozessen verwendet werden, und speichert diese Informationen in der Variablen $result. Wenn Sie nun $result untersuchen, wird Folgendes angezeigt:

Count : 54
Average : 273.148148148148
Sum : 14750
Maximum : 1625
Minimum:
Property : Handles

Beachten Sie, dass in diesem Beispiel insgesamt 54 Prozesse ausgeführt werden und insgesamt 14.750 Handles verwendet werden, was einem Durchschnitt von etwa 273 Handles pro Prozess entspricht. Die größte Anzahl von Handles, die von einem Prozess verwendet werden, beträgt 1625 Handles.

Die dritte Zeile ($results | out-file '.\ProcessHandleStats.txt') speichert die Ergebnisse in einer Textdatei. Erfahrene Windows PowerShell-Benutzer würden die drei soeben beschriebenen Befehle wahrscheinlich in einem einzigen Befehl kombinieren:

PS C:\> gps | measure-object handles -sum -average -max |
        out-file '.\ProcessHandleStats.txt'

Ein Merkmal der Windows PowerShell-Architektur ist, dass Windows PowerShell von Benutzern und Drittanbietern auf allen Ebenen problemlos erweitert werden kann. Die Erweiterbarkeit von Windows PowerShell bedarf eines eigenen Artikels. Im folgenden Abschnitt wird lediglich ein Beispiel aufgegriffen.

In der am Ende dieses Artikels verlinkten Webcastdemonstration veranschaulichen Jeffrey Snover und Bill Staples ein bemerkenswertes Windows PowerShell-Cmdlet zur Ausgabe von Visualisierungen, das von einem Drittanbieterunternehmen entwickelt wurde. Dieses Cmdlet heißt out-gauge. Beachten Sie die semantische Ähnlichkeit zum intrinsischen Cmdlet out-file. Anstatt die Ausgabe wie bei out-file an eine Datei zu senden, wird die Ausgabe bei out-gauge an eine visuell umfangreiche Gruppe von Steuerelementen gesendet. Einer der Befehle, die im Webcast veranschaulicht werden, lautet beispielsweise:

PS C:\> get-process |
        measure-object handles -sum |
        out-gauge -value sum -refresh 0:0:1 -float -type

Mit diesem Befehl wird eine nicht auf dem Bildschirm verankerte, digitale Messung erzeugt, die die Gesamtanzahl der verwendeten Handles in Echtzeit anzeigt und die Anzeige jede Sekunde aktualisiert. Das alles verdeutlicht, dass in Kürze eine Vielzahl nützlicher Tools auf Basis von Windows PowerShell verfügbar sein wird.

Als Nächstes wird ein Beispiel für die IIS-Websitebereitstellung mit Windows PowerShell betrachtet. Da sich vorherige Versionen der IIS-Speicherkonfiguration in der Metabasis befinden, ist das Kopieren einer Website von einem Computer auf einen anderen nicht möglich. Mit IIS kann die Websitebereitstellung einfach durch das Kopieren von Dateien durchgeführt werden. Betrachten Sie dieses Windows PowerShell-Skript:

# file: Deploy-Application.ps1

$sourceMachine = "DemoServer1"
$farmList = get-content '.\RestOfFarm.txt'
$filesToCopy = get-content '.\AppManifest.txt'

foreach ($targetMachine in $farmList)
{
   foreach ($file in $filesToCopy)
   {
      $sourcePath = "\\" + (join-path $sourceMachine $file)
      $destPath   = "\\" + (join-path $targetMachine $file)
      write-host -for yellow "$targetMachine : Copying files from
        $sourcePath"

      copy-item $sourcePath $destPath
        -recurse -force
   }
}

Dieses Skript ist komplex, aber aufschlussreich. Als Datei „Deploy-Application.ps1“ gespeichert und anschließend über eine Windows PowerShell-Befehlszeile ausgeführt, sieht das Script folgendermaßen aus:

PS C:\> .\Deploy-Application.ps1

Letztendlich werden alle Dateien, die in der Datei „AppManifest.txt“ auf dem Computer DemoServer1 aufgelistet sind, auf alle Computer kopiert, die in der Datei „RestOfFarm.txt“ aufgeführt sind. Ein Feature von Windows PowerShell besteht darin, dass gut geschriebene Skripts im Vergleich zu Alternativen wie VBScript oder Perl leicht verständlich sind. Das Skript verwendet das Cmdlet get-content, um Computernamen aus der Datei „RestOfFarm.txt“ und Dateinamen aus der Datei „AppManifest.txt“ zu lesen.

Die foreach-Schleife ist für Sie möglicherweise neu. Die äußere Schleife durchläuft jeden Computernamen, der in der Variablen $farmList gespeichert ist, wobei jeder Name wiederum in der Variablen $targetMachine gespeichert wird. Die innere Schleife ist ähnlich und speichert jede Datei wiederum in $file. Das Cmdlet join-path wird verwendet, um Zeichenfolgen intelligent zu verketten und vollständige Quell- und Zielpfade zu erzeugen.

Schließlich führt das Cmdlet copy-item die Kopieraktionen aus, bei denen die Option -recurse alle Unterverzeichnisse kopiert und die Option -force bewirkt, dass vorhandene Dateien überschrieben werden. Beachten Sie, dass alle Informationen zu Quell- und Zielspeicherorten im Skript hartcodiert sind. Windows PowerShell verfügt über hervorragende Parameterübergabefunktionen. Dieses Beispielskript könnte somit parametrisiert werden, damit es Informationen aus der Befehlszeile akzeptiert. Dieses Thema übersteigt jedoch den Umfang dieses Artikels.

Windows PowerShell mit IIS

Bisher wurden in diesem Artikel Windows PowerShell-Beispiele vorgestellt, die für jeden Servercomputer gelten. Nun werden einige Windows PowerShell-Cmdlets untersucht, die für IIS spezifisch sind.

IIS fügt die leistungsstarke Möglichkeit hinzu, dynamisch erstellte Inhalte zwischenzuspeichern. IIS verfügt schon lange über die Möglichkeit, statische Seiten zwischenzuspeichern. Wenn der Server neue Clientanforderungen für kürzlich angeforderte Inhalte empfängt, tritt Folgendes auf: Anstatt diesen Inhalt aus dem externen Speicher abrufen zu müssen, kann der angeforderte Inhalt sofort aus dem CPU-Cache abgerufen und an den Client zurückgegeben werden. Dadurch wird eine erhebliche Leistungsverbesserung erzielt. IIS führt diesen Gedanken fort, indem das Zwischenspeichern dynamisch erstellter Seiten ebenfalls ermöglicht wird. Betrachten Sie das Vorabrelease dieses IIS Windows PowerShell-Cmdlets:

PS C:\> add-iiscaching
        -computer $computerlist
        -path Demo
        -location index.php
        -credential $cred
        -extension .php
        -kernelcachepolicy 0
        -itemlocation 0
        -policy 1
        -varybyquerystring "Qwd,Qif,Qiv,Qis"

Das Schreiben benutzerdefinierter Cmdlets übersteigt als Thema den Umfang dieses Artikels. Dieses Beispiel gibt jedoch eine Vorstellung der Arten von Cmdlets, die Sie schreiben können und die die IIS-Community schreiben wird. Der Name des Cmdlets lautet add-iiscaching. Wie bereits erwähnt, verfügt Windows PowerShell über eine erweiterbare Architektur, mit der das IIS-Entwicklungsteam benutzerdefinierte Cmdlets erstellen kann, die direkt mit IIS funktionieren. Letztendlich wird mit diesem Befehl die dynamische Zwischenspeicherung bei Seitenanforderungen mit Qwd, Qif, Qiv und Qis in der Abfragezeichenfolge für eine bestimmte PHP-Anwendung auf allen IIS-Servern ermöglicht, deren Namen in der Variablen $computerlist gespeichert sind.

Im Wesentlichen geht es darum, dass Sie bei der Verwendung von IIS mithilfe eines einfachen Windows PowerShell-Befehls eine hohe Leistungsverbesserung erzielen können. Obwohl das klar sein sollte, werden im Artikel weitere Details zu den Switch-Parametern in diesem Beispiel erläutert.

Das erste Argument (-computer $computerlist) gibt an, auf welchen Computern der Befehl add-iiscaching ausgeführt werden soll. Beispiel: Wenn Sie über eine einfache Textdatei namens „MyServers.txt“ mit Computernamen wie die folgenden verfügen:

demo1server
demo2server
demo3server
demo4server

dann liest der Befehl

PS C:\> $computerlist = get-content '.\MyServers.txt'

die Liste der Server in die Variable $computerlist ein.

Das zweite Argument (-path Demo) verweist auf den Stammpfad der Anwendung, für die Sie die Zwischenspeicherung aktivieren möchten. Da der Pfadwert keine Leerzeichen enthält, können Anführungszeichen in diesem Beispiel weggelassen werden, obwohl sie folgendermaßen verwendet werden könnten: -path "Demo".

Das dritte Argument (-location index.php) verweist auf die Zielanwendung. Das vierte Argument (-credential $cred) enthält in der Variablen $cred Authentifizierungsinformationen. Das ist erforderlich, da in diesem Artikel Dateien auf Remotecomputer kopiert werden. Diese Informationen können außerdem durch das intrinsische Cmdlet get-credential folgendermaßen erfasst werden:

PS C:\> $cred = get-credential

Mit diesem Befehl wird ein GUI-Steuerelement gestartet, in dem Benutzer einen Benutzernamen und ein Kennwort angeben könnten, wobei die Ergebnisse in der Variablen $cred gespeichert würden.

Das fünfte Argument (-extension .php) gibt den Typ der Anwendung an, die zwischengespeichert werden soll.

Das sechste Argument (-kernelcachepolicy 0) weist das Cmdlet add-iiscaching an, Kernelinformationen nicht zwischenzuspeichern.

Das siebte Argument (-itemlocation 0) gibt an, wo Antwortinformationen zwischengespeichert werden sollen. 0 bedeutet, dass diese auf dem Client oder dem Server gespeichert werden sollen.

Das achte Argument (-policy 1) bedeutet, dass die Zwischenspeicherung fortgesetzt werden soll, bis eine Änderung des zugrunde liegenden Cacheelements auftritt, anstatt diese für ein bestimmtes Zeitintervall auszuführen.

Das letzte Argument (-varybyquerystring "Qwd,Qif,Qiv,Qis") teilt IIS mit, welche Art von Antwort zwischengespeichert werden soll. In diesem Fall sollen Antworten auf Anforderungen zwischengespeichert werden, die Qwd, Qif, Qiv und Qis in der Abfragezeichenfolge enthalten. (Dabei handelt es sich um bestimmte Namensteile von Name-Wert-Paaren, die von der PHP-Anwendung in diesem Beispiel verwendet werden.)

Zusammenfassung

In diesem Artikel wurde Windows PowerShell zunächst in einer kurzen Übersicht als die neue Shellumgebung und Skriptsprache von Microsoft vorgestellt. Einige typische Beispiele für die Navigation und Manipulation von Dateien in Windows PowerShell wurden aufgeführt. Zudem wurde die Behauptung aufgestellt, dass Windows PowerShell die Funktionalität vorhandener Shellumgebungen weit übersteige.

Im zweiten Abschnitt dieses Artikels wurde die Verwendung von Windows PowerShell in einer typischen Umgebung veranschaulicht, in der IIS ausgeführt wird. Unter anderem wurden in den Beispielen Windows-Dienste und -Prozesse auf einem Hostcomputer untersucht. Außerdem wurde eine Liste der Vorteile der Verwendung von Windows PowerShell zum Verwalten und Interagieren mit IIS angekündigt.

Die folgenden sechs Kommentare von Erstanwendern von Windows PowerShell beziehen sich auf solche Vorteile. Darüber hinaus umfassen sie Vorteile, die das IIS-Team festgestellt hat.

  1. Da Windows PowerShell-Befehle als Skripts gespeichert werden können, können sie automatisch gespeichert und ausgeführt werden. Dieser Vorteil gilt für alle skriptbasierten Techniken, allerdings ist Windows PowerShell wesentlich einfacher zu verwenden als andere vorhandene Skriptsprachen.
  2. Da Windows PowerShell-Befehle als Skripts gespeichert und verwendet werden können, erstellen diese einen selbstdokumentierenden Datensatz der IIS-Verwaltungsaktivität. Wie oft haben Sie versucht, sich zu merken, wie Sie mithilfe der regedit.exe-GUI einen Registrierungsschlüssel geändert haben?
  3. Im Vergleich zur Verwendung GUI-basierter Verwaltungsschnittstellen gewähren Windows PowerShell-Befehle ungestörte und genaue Einblicke in die Vorgänge unter der Haube. GUI-basierte Tools eignen sich gut für weniger anspruchsvolle Verwaltungsaktivitäten. Die Verwendung GUI-basierter Tools kann jedoch zu Gedanken wie diesem führen: „Ich verstehe zwar nicht genau, warum es funktioniert, aber wenn ich darauf doppelklicke, wird das Problem normalerweise behoben.“
  4. Da viele andere Microsoft-Serverprodukte auf Windows PowerShell basieren, lernen Sie bei jeder Verwendung von Windows PowerShell-Befehlen und -Skripts zum Verwalten von IIS indirekt etwas über andere Systeme.
  5. Bei der Verwendung von Windows PowerShell entsteht ein allgemeines Verwaltungsdenkmuster und Kommunikationsmittel: Windows PowerShell-Communitys wachsen schnell, und es ist viel einfacher, die Dokumentation oder Blogbeiträge in Form von Windows PowerShell-Befehlen zu verstehen als eine Dokumentation, die sich folgendermaßen liest: „Öffnen Sie MMC, klicken Sie dann hier, klicken Sie dann dort, und doppelklicken Sie dort oben. . .“
  6. Da Windows PowerShell eine umfassende Umgebung bietet, können Sie den Großteil Ihrer Arbeit in Windows PowerShell ausführen. Es ist nicht erforderlich, ständig von einem GUI-basierten Programm zu einer cmd.exe-Shell und wieder zu einem anderen GUI-basierten Programm zu wechseln. Das ähnelt der Entwicklung von Aktivitäten bei der Softwareentwicklung von der Verwendung separater Compiler, Linker, Debugger usw. hin zur Verwendung einer integrierten Umgebung wie Visual Studio.

Im zweiten Abschnitt dieses Dokuments wurde außerdem ein Beispiel eines Windows PowerShell-Skripts veranschaulicht, das die Fähigkeit von IIS demonstriert, Webserver mithilfe einfacher Dateikopiervorgänge auf mehreren Computern bereitzustellen.

Im dritten Abschnitt dieses Dokuments wurde erläutert, wie das Windows PowerShell-Design es der IIS-Community ermöglicht, benutzerdefinierte Windows PowerShell-Cmdlets zu erstellen und zu teilen, die direkt mit nativen IIS-Funktionen funktionieren. Insbesondere wurde add-iiscaching vorgestellt, ein Vorabrelease des Cmdlets, mit dem die Fähigkeit von IIS zum Zwischenspeichern dynamisch erstellter Seiten genutzt werden kann.

Obwohl dieser Artikel lediglich das Grundkonzept der Zusammenarbeit von Windows PowerShell und IIS beschrieben hat, sollten Sie nach der Lektüre davon überzeugt sein, dass diese Kombination eine einfachere, effizientere und angenehmere IT-Verwaltung ermöglich.

Ressourcen für Windows PowerShell und IIS

Den Webcast mit Windows PowerShell-Architekt Jeffrey Snover und IIS Product Unit Manager Bill Staples, der als Grundlage für den Artikel diente, finden Sie unter Beitritt von Channel 9 zu Microsoft Learn.

Weitere Informationen zu den Visualisierungstools auf Basis von Windows PowerShell finden Sie hier.

Informationen zu Microsoft IIS finden Sie unter www.iis.net.

Zum Autor

Dr. James McCaffrey arbeitet für Volt Information Sciences, Inc., wo er technische Schulungen für technische Fachkräfte für Software verwaltet, die am Microsoft-Campus in Redmond, Washington arbeiten. Er hat als leitende technische Fachkraft an mehreren wichtigen Microsoft-Produkten wie Internet Explorer und MSN Search gearbeitet und ist Autor von „.NET Test Automation: A problem-solution approach“, Apress, 2006.