Erste Schritte mit AppCmd.exe

von Mike Volodarsky

Übersicht

AppCmd.exe ist das einzelne Befehlszeilentool zum Verwalten von IIS 7 und höher. Sie macht alle wichtigen Serververwaltungsfunktionen über eine Reihe intuitiver Verwaltungsobjekte verfügbar, die über die Befehlszeile oder von Skripts bearbeitet werden können.

Mit AppCmd können Sie den Server ganz einfach steuern, ohne ein grafisches Verwaltungstool zu verwenden, und Serververwaltungsaufgaben schnell automatisieren, ohne Code zu schreiben.

Dies sind einige der Möglichkeiten mit AppCmd:

  • Erstellen und Konfigurieren von Websites, Apps, Anwendungspools und virtuellen Verzeichnissen
  • Starten und Beenden von Websites und Wiederverwenden von Anwendungspools
  • Auflisten ausgeführter Arbeitsprozesse und Untersuchen der derzeit ausgeführten Anforderungen
  • Suchen, Bearbeiten, Exportieren und Importieren von IIS und ASP.NET Konfiguration

Mit AppCmd können Serveradministratoren auch erweiterte Verwaltungsaufgaben erstellen, indem sie mehrere einfachere AppCmd.exe Befehle kombinieren oder die Ausgabe des Tools innerhalb eines anderen Programms wiederverwenden.

Sie finden außerdem weitere AppCmd-Themen und leistungsstarke Möglichkeiten zum Verwalten Ihres Servers über die Befehlszeile in meinem Blog unter https://mvolo.com/category/appcmd/.

Verwenden von AppCmd.exe

Die AppCmd.exe Befehlszeile basiert auf einer Reihe von Serververwaltungsobjekten der obersten Ebene, z. B. Website und Anwendung. Diese Objekte machen Methoden verfügbar, die zum Ausführen verschiedener Aktionen für diese Objekte verwendet werden können, und Objektinstanzen machen Eigenschaften verfügbar, die überprüft und bearbeitet werden können.

Beispielsweise stellt das Site-Objekt Methoden zum Auflisten, Erstellen und Löschen von Websiteinstanzen bereit (dies sind Standardmethoden, die für fast alle Objekte vorhanden sind), sowie Stopp- und Startwebsites. Jede Websiteinstanz enthält wiederum Eigenschaften, z. B. Websitename und Website-ID, die überprüft, gesucht oder festgelegt werden können. Die Ausgabe jedes Befehls ist immer eine Liste von Objektinstanzen.

Hinweis

AppCmd.exe befindet sich im Verzeichnis %systemroot%\system32\inetsrv\. Da es nicht automatisch Teil des PFADS ist, müssen Sie den vollständigen Pfad zur ausführbaren Datei verwenden, wenn Sie Befehle wie in %systemroot%\system32\inetsrv\AppCmd.exe list sites ausführen. Alternativ können Sie das Inetsrv-Verzeichnis manuell zum Pfad auf Ihrem Computer hinzufügen, damit Sie direkt von jedem Speicherort aus auf AppCmd.exe zugreifen können.

Das Tool funktioniert durch Ausführen eines Befehls auf einem der unterstützten Verwaltungsobjekte, wobei optionale Parameter verwendet werden, um das Verhalten des Befehls weiter anzupassen:

APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*

Dabei ist <COMMAND> einer der Befehle, die von <OBJECT> unterstützt werden. Die meisten Objekte unterstützen diesen grundlegenden Satz von Befehlen:

  • LIST Zeigt die Objekte auf dem Computer an. Eine optionale <ID> kann ein eindeutiges Objekt für die Liste angeben, oder ein oder mehrere Parameter können angegeben werden, um mit Objekteigenschaften abzugleichen.
  • ADD Erstellt ein neues Objekt mit den angegebenen Objekteigenschaften, die bei der Erstellung festgelegt werden.
  • DELETE Löscht das durch die <ID>angegebene Objekt.
  • SET Legt Parameter auf dem von der <ID> angegebenen Objekt fest.

Ein Objekt unterstützt häufig zusätzliche Befehle, z. B. START und STOP für das Site-Objekt.

Beispielsweise lautet der aktuelle Satz von Objekten, die über AppCmd verfügbar sind (wobei <OBJECT> eines der vom Tool unterstützten Verwaltungsobjekte ist):

Object Beschreibung
Site Verwaltung virtueller Websites
App Verwaltung von Anwendungen
VDir Verwaltung virtueller Verzeichnisse
Apppool Verwaltung von Anwendungspools
Konfigurationen Verwaltung allgemeiner Konfigurationsabschnitte
Backup Verwaltung von Serverkonfigurationssicherungen
WP Verwaltung von Arbeitsprozessen
Anfordern Anzeige der aktiven HTTP-Anforderungen.
Modul Verwaltung von Servermodulen
Trace Verwaltung von Serverablaufverfolgungsprotokollen

Dabei ist <ID> der objektspezifische Bezeichner für die Objektinstanz, die Sie für den Befehl angeben möchten. Das Format des Bezeichners ist für jeden Objekttyp spezifisch. Das Websiteobjekt verwendet beispielsweise den Websitenamen, das App-Objekt verwendet den Anwendungspfad, und das AppPool-Objekt verwendet den Anwendungspoolnamen.

Dabei ist [ /parameter:value ]* null oder mehr Parameter für den Befehl. Jeder Befehl unterstützt je nach Objekt einen anderen Satz von Parametern. In der Regel können Befehle, die nach Objekten suchen oder Objekteigenschaften bearbeiten, alle Eigenschaften des Objekts als Parameter angeben.

Das Tool selbst unterstützt auch eine Reihe von Parametern, die sich auf die allgemeine Befehlsausführung auswirken und für keines der Objekte spezifisch sind. Diese werden auf der Hilfeseite der obersten Ebene aufgelistet, die über „AppCmd.exe /?“ verfügbar ist, und enthalten Parameter wie /text, /config und /xml zum Steuern der Toolausgabe und /commit zum Steuern des Speicherorts von Konfigurationsänderungen.

Abrufen von Hilfe

AppCmd bietet selbst beschreibende Hilfe, die als Referenz für alle unterstützten Objekte und Befehle verwendet werden kann. Es stehen drei Arten von Hilfe zur Verfügung, während Sie einen Drilldown zu der Aufgabe ausführen, die Sie ausführen möchten.

Allgemeine Hilfe

Auf dem allgemeinen Hilfebildschirm werden die vom Tool unterstützten Objekte sowie allgemein anwendbare Toolparameter angezeigt. So zeigen Sie allgemeine Hilfe an:

APPCMD /?

Die ersten Zeilen der Ausgabe sind:

General purpose IIS command line administration tool.
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >

Supported object types:
       
  SITE      Administration of virtual sites
  APP       Administration of applications              

...

Objekthilfe

Der Hilfebildschirm des Objekts zeigt die Befehle an, die von einem bestimmten Objekt unterstützt werden. So zeigen Sie die Objekthilfe an:

APPCMD <OBJECT> /?

dabei ist <OBJECT> einer der unterstützten Objekttypen. Diese Befehlszeile zeigt beispielsweise Hilfe für das Websiteobjekt an:

APPCMD site /?

Befehlshilfe

Der Befehlshilfebildschirm beschreibt die Syntax für einen bestimmten Befehl und ein bestimmtes Objekt, einschließlich der von ihr unterstützten Parameter und Beispiele für allgemeine Aufgaben. So zeigen Sie die Befehlszeilenhilfe an:

APPCMD <COMMAND> <OBJECT> /?

Diese Befehlszeile zeigt beispielsweise Hilfe für den LIST-Befehl des App-Objekts an:

APPCMD list app /?

Suchen von Objekten mit dem LIST-Befehl

Der LIST-Befehl ist der vielseitigste Befehl und wird von allen Objekten unterstützt. Der Zweck dieses Befehls besteht darin, Instanzen des Objekts basierend auf den von Ihnen angegebenen Kriterien zu finden. Die Ausgabe dieses Befehls ist eine Liste von Objektinstanzen, die Sie überprüfen können, indem Sie deren Eigenschaften anzeigen, die zukünftige Neuerstellung auf einem anderen Computer exportieren oder zusammen mit einem anderen Befehl verwenden, um Aktionen für sie auszuführen.

Auflisten aller Objekte

Die einfachste Methode zum Verwenden des LIST-Befehls ist ohne Parameter, die einfach alle bekannten Instanzen des Objekts auflistet:

APPCMD list <OBJECT>

Wenn Sie beispielsweise alle Websites auf dem Computer auflisten möchten, verwenden Sie diese Befehlszeile:

%systemroot%\system32\inetsrv\APPCMD list sites

Die Ausgabe ähnelt der folgenden:

SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)

Standardmäßig wird jedes Objekt in einer einzelnen Zeile angezeigt und gibt seinen objektspezifischen Bezeichner (z. B. „Standardwebsite“) und eine oder mehrere wichtige Eigenschaften (z. B. ID, Bindungen und Zustand) an.

Auflisten eines bestimmten Objekts

Der LIST-Befehl kann verwendet werden, um eine Instanz eines bestimmten benannten Objekts mithilfe einer Befehlszeile in diesem Formular zu finden:

APPCMD list <OBJECT> <ID>

Verwenden Sie beispielsweise diese Befehlszeile, um die Website mit einer eindeutigen ID von „Standardwebsite“ zu finden:

%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site"

Auflisten von Objekten, die einer Abfrage entsprechen

Um alle Objektinstanzen zu finden, die bestimmten Kriterien entsprechen, geben Sie einen oder mehrere Parameter an, die Eigenschaftswerte der Objekte angeben, die übereinstimmen sollen. Verwenden Sie z. B. diese Befehlszeile, um alle Websites zu finden, die angehalten werden:

%systemroot%\system32\inetsrv\APPCMD list sites /state:Stopped

Sie können eine beliebige Anzahl von Eigenschaftswertpaaren angeben, und das Tool stellt sicher, dass die zurückgegebenen Objekte alle angegebenen Kriterien erfüllen. Verwenden Sie beispielsweise diese Befehlszeile, um Websites zu finden, die sowohl angehalten als auch so konfiguriert sind, dass sie nicht automatisch gestartet werden:

%systemroot%\system32\inetsrv\APPCMD list sites /serverAutoStart:false /state:Stopped

Bearbeiten von Objekten mit ADD, SET und DELETE

Zusätzlich zu LIST unterstützen die meisten Objekte auch ADD-, SET- und DELETE-Befehle.

Hinzufügen neuer Objekte

Der ADD-Befehl erstellt eine neue Instanz eines Objekts. Diese Befehlszeile erstellt beispielsweise eine neue Website:

%systemroot%\system32\inetsrv\APPCMD add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"C:\MyNewSite"

Je nach Objekt sind einige Parameter erforderlich, um erforderliche Eigenschaften für die neue Instanz festzulegen, und andere Eigenschaften können optional sein. Wenn kein erforderlicher Parameter angegeben ist, wird ein Fehler zurückgegeben.

Der Befehlshilfebildschirm gibt an, welche Parameter erforderlich sind. Verwenden Sie beispielsweise diese Befehlszeile, um zu sehen, welche Parameter zum Hinzufügen einer Website erforderlich sind:

%systemroot%\system32\inetsrv\APPCMD add site /?

Nachfolgend finden Sie weitere Informationen zum Erstellen von Websites, Anwendungen, virtuellen Verzeichnissen und Anwendungspools mit AppCmd.

Ändern vorhandener Objekte

Der SET-Befehl legt eine oder mehrere Eigenschaften für eine angegebene Objektinstanz fest. Für diesen Befehl muss der objektspezifische Bezeichner angegeben werden. Wenn Sie beispielsweise die ID-Eigenschaft der „Standardwebsite“ ändern möchten, verwenden Sie die folgende Befehlszeile:

%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /id:200

Verwenden Sie eine Form der Befehlshilfesyntax, um zu sehen, welche Eigenschaften für ein bestimmtes Objekt festgelegt werden können. Um beispielsweise die von der Standardwebsite unterstützten Eigenschaften anzuzeigen, verwenden Sie:

%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /?

Löschen von Objekten

Der DELETE-Befehl löscht eine Instanz eines Objekts. Für diesen Befehl muss wie für SET ebenfalls der objektspezifische Bezeichner angegeben werden. Verwenden Sie beispielsweise diese Befehlszeile, um die Website mit dem Namen „MyNewSite“ zu löschen:

%systemroot%\system32\inetsrv\APPCMD delete site "MyNewSite"

Verwalten von Sicherungen

Mit AppCmd können Sie Sicherungen der globalen Serverkonfiguration erstellen und wiederherstellen. Sie können dies verwenden, um unerwünschte Änderungen an der Serverkonfiguration wiederherzustellen und zu einem bekannten Serverstatus zurückzukehren. Es empfiehlt sich, vor dem Ändern der Serverkonfiguration eine Sicherung zu erstellen oder eine Komponente zu installieren, die sie ändert. Jede Sicherung enthält die Kopie der aktuellen ApplicationHost.config-Stammkonfigurationsdatei sowie einen anderen zugehörigen serverweiten Zustand, einschließlich FTP-Konfiguration und der IIS-Verwaltungstoolkonfiguration.

Verwenden Sie zum Erstellen einer Sicherung den ADD-Befehl des Sicherungsobjekts:

%systemroot%\system32\inetsrv\APPCMD add backup
BACKUP object "20060519T172530" added

Dadurch wurde eine Sicherung mit einem automatisch generierten Namen erstellt, der das Datum und die Uhrzeit der Sicherung darstellt.

Ein bestimmter Name für die Sicherung kann wie folgt angegeben werden:

%systemroot%\system32\inetsrv\APPCMD add backup MyBackup
BACKUP object "MyBackup" added

Mit dem LIST-Befehl des Sicherungsobjekts können Sie eine Liste der verfügbaren Sicherungen anzeigen:

%systemroot%\system32\inetsrv\APPCMD list backups
BACKUP "20060519T172530"
BACKUP "MyBackup"

Zum Wiederherstellen einer Sicherung verwenden Sie schließlich den WIEDERHERSTELLEN-Befehl mit dem Namen der Sicherung:

%systemroot%\system32\inetsrv\APPCMD restore backup "MyBackup"
Restored configuration from backup "MyBackup"

Durch das Wiederherstellen einer Sicherung wird der Server beendet und die globale Konfiguration zum Zeitpunkt der Erstellung der Sicherung wiederhergestellt.

In Windows Server® 2008 und Windows Vista SP1 kann AppCmd auch mit regelmäßigen Konfigurationssicherungen des Konfigurationsverlaufsdiensts arbeiten. Diese Sicherungen werden in der AppCmd-Liste der Sicherungen angezeigt und stehen auf die gleiche Weise zur Wiederherstellung zur Verfügung, wie Sicherungen, die Sie manuell über das Tool vorgenommen haben.

Weitere Informationen zum Verwalten von Konfigurationssicherungen mit AppCmd finden Sie unter http://mvolo.com/most-important-appcmd-commands-backing-up-and-restoring-iis7-configuration/.

Arbeiten mit Websites, Webanwendungen, virtuellen Verzeichnissen und Anwendungspools

Das Erstellen und Verwalten von Websites, Anwendungen und virtuellen Verzeichnissen sind die häufigsten Aufgaben, denen Administratoren gegenüberstehen. IIS 7 und höher verwenden eine strengere Eigenständigkeitshierarchie als frühere Versionen, die wie folgt funktionieren:

  1. Website Eine Website empfängt Anforderungen an bestimmte Bindungsendpunkte, die durch IP-Adressen und Hostheader definiert sind. Diese URL stellt beispielsweise eine Website dar, die an Port 81 gebunden ist: http://www.mysite.com:81.

    Eine Website enthält eine oder mehrere Anwendungen.

  2. Anwendung Eine Anwendung wird durch ihren virtuellen Pfad innerhalb des URL-Namespaces einer Website dargestellt. Beispielsweise kann eine Anwendung mit einem virtuellen Pfad von „/app1“ durch diese URL dargestellt werden: http://www.mysite.com:81/app1.

    Eine Anwendung gehört zu einem Anwendungspool.

    Eine Anwendung enthält mindestens ein virtuelles Verzeichnis.

  3. Virtuelles Verzeichnis Ein virtuelles Verzeichnis wird durch seinen virtuellen Pfad im URL-Namensraum einer Anwendung dargestellt. Beispielsweise kann ein virtuelles Verzeichnis mit einem virtuellen Pfad von „/vdir1“ durch diese URL dargestellt werden: http://www.mysite.com:81/app1/vdir1.

    Ein virtuelles Verzeichnis wird einem physischen Speicherort auf dem Datenträger zugeordnet.

Diese Hierarchie ist im Gegensatz zu IIS 6.0, in dem eine Website eine Mischung aus virtuellen Verzeichnissen und Anwendungen enthalten kann, und Anwendungen sind nur speziell als virtuelle Verzeichnisse gekennzeichnet.

Anwendungspool Ein Anwendungspool gibt eine Gruppe von Einstellungen für die Arbeitsprozesse an, die die Anforderungsverarbeitung für die Anwendungen in diesem Anwendungspool ausführen. Anwendungspools sind nicht Teil der Hierarchie „site-app-vdir“. Jede Anwendung gibt an, in welchem Anwendungspool sie ausgeführt wird, oder sie wird im Standardanwendungspool ausgeführt. Der Anwendungspool definiert eine Reihe von Arbeitsprozesseinstellungen, z. B. die von ihr geladene CLR-Version, den .NET-Integrationsmodus, das Konto, unter dem der Arbeitsprozess ausgeführt wird, und die Wiederverwendungseinstellungen.

Standardmäßig werden IIS 7 und höher mit einer Website namens „Standardwebsite“ installiert, die auf Port 80 ohne IP-Adresse oder Hostheader-Einschränkungen lauscht. Diese Website verfügt über eine Stammanwendung und diese Anwendung verfügt über ein virtuelles Stammverzeichnis. Es gibt auch einen Anwendungspool namens „DefaultAppPool“, der standardmäßig von allen neuen Anwendungen verwendet wird.

Diese Befehlszeile listet alle Websites auf, einschließlich der Standardwebsite:

%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)

Sehen wir uns die Anwendungen an, die zur Standardwebsite gehören, indem wir beim Auflisten von Apps die site.name-Eigenschaft angeben:

%systemroot%\system32\inetsrv\APPCMD list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)

Ein ähnlicher Befehl listet die virtuellen Verzeichnisse in der Anwendung „Standardwebsite/“ auf, indem die app.name-Eigenschaft beim Auflisten von Vdirs angegeben wird:

%systemroot%\system32\inetsrv\APPCMD list vdirs /app.name:"Default Web Site/"
VDIR "Default Web Site/" (physicalPath:C:\inetpub\wwwroot)

Lassen Sie uns schließlich die Anwendungspools untersuchen:

%systemroot%\system32\inetsrv\APPCMD list apppools
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)

Erstellen von Websites, Anwendungen, virtuellen Verzeichnissen und Anwendungspools

Jetzt erstellen wir eine neue Website namens „MySite“, mit der Website-ID von 2, die auf Port 81 für alle IP-Adressen und Hostheader lauscht:

%systemroot%\system32\inetsrv\APPCMD add site /name:MySite /id:2 /bindings:http/*:81: /physicalPath:C:\inetpub\mysite
SITE object "MySite" added
APP object "MySite/" added
VDIR object "MySite/" added

Die Namensparameter müssen angegeben werden, um eine Website zu erstellen. Der ID-Parameter ist optional und bewirkt, dass AppCmd die nächste verfügbare Website-ID für die neue Website generiert, wenn sie weggelassen wird. Außerdem geben wir die Bindungen und physicalPath-Parameter an, die unten erläutert werden. Sie können auch zusätzliche Eigenschaften angeben, um deren Werte festzulegen.

Die Bindungen-Eigenschaft verwendet das Format Protokoll/bindingInformation, wobei bindingInformation spezifisch für das Protokoll ist. Bei HTTP befindet es sich im Format IP:PORT:HOSTHEADER. Sie können mehrere Bindungen angeben, indem Sie ein Komma verwenden, um jede Definition zu trennen.

Wir haben auch eine physicalPath-Eigenschaft für die Website angegeben. Während eine Website selbst keinen physischen Pfad aufweist, wird dieses kurze Formular verwendet, um eine Website mit einer Stammanwendung und einem virtuellen Stammverzeichnis, das dem angegebenen physischen Pfad zugeordnet ist, bequem zu erstellen.

Wenn Sie keinen physischen Pfad angeben, wird die Website ohne Anwendungen erstellt. eine Anwendung und ein virtuelles Verzeichnis müssen explizit erstellt werden.

Fahren wir nun fort und fügen der Website eine weitere Anwendung hinzu:

%systemroot%\system32\inetsrv\APPCMD add app /site.name:MySite /path:/app1 /physicalPath:C:\inetpub\mysite\app1
APP object "MySite/app1" added
VDIR object "MySite/app1/" added

Dadurch wurde eine neue Anwendung mit dem virtuellen Pfad „/app1“ erstellt, der zu der Website gehört, die wir oben erstellt haben, wobei ein virtuelles Stammverzeichnis auf C:\inetpub\mysite\app1 zeigt. Der erforderliche Pfadparameter gibt den virtuellen Pfad der neuen Anwendung an, und der erforderliche site.name-Parameter gibt die Website an, zu der die Anwendung gehört. Der optionale physicalPath-Parameter ist eine Verknüpfung, ähnlich wie im Site-Fall, die zusammen mit der Anwendung ein virtuelles Stammverzeichnis erstellt.

Wenn Sie den physicalPath-Parameter nicht angeben oder der Anwendung ein weiteres virtuelles Verzeichnis hinzufügen möchten, verwenden Sie eine Befehlszeile wie die folgende:

%systemroot%\system32\inetsrv\APPCMD add vdir /app.name:"MySite/app1" /path:/vdir1 /physicalPath:C:\inetpub\mysite\app1\vdir1
VDIR object "MySite/app1/vdir1" added

Dadurch wurde ein neues virtuelles Verzeichnis mit dem virtuellen Pfad „/vdir1“ erstellt, der zu der Anwendung gehört, die wir oben erstellt haben, und der auf C:\inetpub\mysite\app1\vdir1 zeigt. Der erforderliche Pfadparameter gibt den virtuellen Pfad des neuen virtuellen Verzeichnisses an, und der erforderliche app.name-Parameter gibt die Anwendung an, zu der das virtuelle Verzeichnis gehört. Der physicalPath-Parameter gibt den physischen Speicherort des virtuellen Verzeichnisses an.

Abschließend erstellen wir einen neuen Anwendungspool:

%systemroot%\system32\inetsrv\APPCMD add apppool /name:MyAppPool
APPPOOL object "MyAppPool" added

Dadurch wurde ein neuer Anwendungspool namens „MyAppPool“ erstellt.

Weitere Informationen zu Websites, Anwendungen und virtuellen Verzeichnissen in IIS 7 und höher sowie zu den Optionen, die Sie beim Erstellen mit AppCmd haben, finden Sie unter Erstellen von Websites, Anwendungen und virtuellen Verzeichnissen.

Erstellen von Websites, Anwendungen, virtuellen Verzeichnissen und Anwendungspools

Zuvor haben wir eine neue Website mit einigen Anwendungen und virtuellen Verzeichnissen hinzugefügt. Jetzt verwenden wir AppCmd, um einige ihrer Eigenschaften zu ändern. Alle AppCmd-Objekte unterstützen dieselbe Standardsyntax zum Festlegen von Eigenschaften:

APPCMD SET <OBJECT> <ID> [ /property:value ]*

Als Erstes zeigen wir die auf dem Computer verfügbaren Anwendungen an:

%systemroot%\system32\inetsrv\APPCMD list apps
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "MySite/" (applicationPool:DefaultAppPool)
APP "MySite/app1" (applicationPool:DefaultAppPool)

Beachten Sie die beiden Anwendungen, die wir zuvor unter der Website „MySite“ erstellt haben. Beide Anwendungen sind für die Verwendung des DefaultAppPool-Anwendungspools festgelegt. Ändern wir nun die ApplicationPool-Eigenschaft der Stammanwendung „MySite/“ so, dass der neue Anwendungspool verwendet wird, den wir zuvor mit dem Namen „MyAppPool“ erstellt haben:

%systemroot%\system32\inetsrv\APPCMD set app "MySite/" /applicationPool:MyAppPool
APP object "MySite/" changed

Dadurch wurde der Wert der applicationPool-Eigenschaft der Anwendung „MySite/“ in den neuen Wert geändert, wobei die Anwendung effektiv in den neuen Anwendungspool verschoben wird.

Der Grund, warum wir die Anwendung in den neuen Anwendungspool verschoben haben, ist, dass wir einige der Laufzeitparameter des Arbeitsprozesses ändern können, in dem diese Anwendung ausgeführt wird. Dazu ändern wir einige der Eigenschaften im Anwendungspool „MyAppPool“. Vor dem Ändern von Eigenschaftswerten ist es häufig hilfreich, zuerst die verfügbaren Eigenschaften und deren aktuelle Werte anzuzeigen. Dazu können wir unsere Anwendung in detaillierter Ansicht auflisten:

%systemroot%\system32\inetsrv\APPCMD list apppool "MyAppPool" /text:*
APPPOOL
  APPPOOL.NAME: MyAppPool
  managedPipelineMode: Integrated
  managedRuntimeVersion: v2.0
  state: Started
  [add]
    name:"MyAppPool"
    queueLength:"1000"
    autoStart:"true"
    enable32BitAppOnWin64:"false"
    managedRuntimeVersion:"v2.0"
    managedPipelineMode:"Integrated"
    passAnonymousToken:"true"
    [processModel]
      identityType:"NetworkService"
      userName:""
      password:""
...
      pingingEnabled:"true"
...

Beachten Sie die Anzahl der Eigenschaften für das Anwendungspoolobjekt. Die vollständige Ausgabe wird hier nicht angezeigt.

Wir sind daran interessiert, die managedRuntimeVersion-Eigenschaft auf „v1.1“ zu ändern, um unsere Anwendungen in diesem Anwendungspool mit ASP.NET v1.1 auszuführen. Dies ist die Befehlszeile dafür:

%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /managedRuntimeVersion:v1.1
APPPOOL object "MyAppPool" changed

Sie können aus der obigen Listenausgabe sehen, dass zahlreiche Eigenschaften für das Anwendungspoolobjekt verfügbar sind, und einige der Eigenschaften werden in einem Konfigurationsunterelement geschachtelt. Prozessoptionen werden z. B. unter dem Unterelement „processModel“ geschachtelt.

Wenn Sie eine geschachtelte Eigenschaft festlegen möchten, adressieren Sie sie mit Elementpfadnotation wie folgt:

%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /processModel.pingingEnabled:false

Andere Konfigurationselemente

Zusätzlich zum Bearbeiten von Konfigurationseigenschaften mit den AppCmd-Objekten der obersten Ebene können Sie Konfigurationseigenschaften für jeden Konfigurationsabschnitt festlegen, einschließlich der Konfigurationseigenschaften, die den AppCmd-Objekten der obersten Ebene zugeordnet sind. Dies wird weiter unten im Abschnitt „Arbeiten mit Konfiguration“ behandelt.

Überprüfen des Serverstatus

AppCmd bietet Funktionen zum Überprüfen verschiedener Aspekte des Laufzeitzustands des Servers, einschließlich:

  • Websitestatus
  • Anwendungspoolstatus
  • Aktive Serverarbeitsprozesse
  • Anforderungen werden aktuell ausgeführt

Darüber hinaus stellen einige Objekte Befehle bereit, mit denen Sie den Laufzeitzustand steuern können, z. B. den STOP-Befehl des Websiteobjekts und den RECYCLE-Befehl des AppPool-Objekts.

Überprüfen des Standort- und Anwendungspoolstatus

Der Status von Websites und Anwendungspools wird aus der Statuseigenschaft jedes Objekts gemeldet. Beim Auflisten von Websites oder Anwendungspools wird der Zustand in der Standardausgabe angezeigt. Zum Beispiel:

%systemroot%\system32\inetsrv\APPCMD list apppools DefaultAppPool
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)

Die Statuseigenschaft kann auch verwendet werden, um nach Websites oder Anwendungspools zu suchen, die sich in einem bestimmten Zustand befinden. So suchen Sie beispielsweise alle gestarteten Anwendungspools:

%systemroot%\system32\inetsrv\APPCMD list apppools /state:started
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)

Überprüfen der ausgeführten Arbeitsprozesse

Sie können das WP-Objekt (Arbeitsprozess) verwenden, um ausgeführte Arbeitsprozesse auflisten:

%systemroot%\system32\inetsrv\APPCMD list wps
WP "3577" (apppool:DefaultAppPool)

Jedes WP-Objekt verfügt über eine apppool.name-Eigenschaft, mit der Sie alle ausgeführten Arbeitsprozesse für einen bestimmten Anwendungspool auflisten können:

%systemroot%\system32\inetsrv\APPCMD list wps /apppool.name:DefaultAppPool
WP "3577" (apppool:DefaultAppPool)

Anforderungen, die aktuell ausgeführt werden, werden untersucht

Mit dem Anforderungsobjekt können Sie die derzeit ausgeführten Anforderungen auf dem Server prüfen:

%systemroot%\system32\inetsrv\APPCMD list requests
REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost)

Die Liste kann auf die Anforderungen einer bestimmten Website, eines Anwendungspools, eines Arbeitsprozesses oder einer URL beschränkt werden, indem die entsprechende Eigenschaft verwendet wird, um die Ergebnisse zu filtern. Im Folgenden finden Sie einige Beispiele:

%systemroot%\system32\inetsrv\APPCMD list request /apppool.name:DefaultAppPool

%systemroot%\system32\inetsrv\
APPCMD list requests /wp.name:3567

%systemroot%\system32\inetsrv\APPCMD list requests /site.id:1

Arbeiten mit Konfigurationen

IIS 7 und höher verfügen über ein XML-basiertes hierarchisches Konfigurationssystem, das dem ASP.NET-Konfigurationssystem ähnelt, das die Serverkonfiguration in schematisierten XML-Abschnitten speichert. Die Konfiguration kann sich in der Datei „ApplicationHost.config“ auf Serverebene befinden oder in verteilten Web.config-Konfigurationsdateien in Ihrer Anwendungshierarchie platziert werden.

AppCmd ermöglicht die vollständige Überprüfung und Bearbeitung der Konfigurationshierarchie über die Befehlszeile über das Config-Objekt. Darüber hinaus bietet AppCmd weitere nützliche Funktionen wie das Löschen der Konfiguration, das Sperren und Entsperren sowie das Durchsuchen.

Anzeigen der Konfiguration

AppCmd funktioniert mit der Konfiguration auf der Ebene der Konfigurationsabschnitte. Jeder Konfigurationsabschnitt beschreibt in der Regel ein Serverfeature und kann ein oder mehrere Unterelemente und Auflistungen enthalten.

Die Konfiguration kann für einen beliebigen URL-Namespace festgelegt werden, z. B. für eine Website, eine Anwendung oder eine URL. Konfigurationseinstellungen, die auf einer höheren Ebene festgelegt werden, werden von allen niedrigeren Ebenen geerbt, es sei denn, sie werden speziell auf niedrigeren Ebenen überschrieben.

Um eine effektive Konfiguration für bestimmte URL-Ebene anzuzeigen, verwenden Sie den LIST-Befehl des Konfigurationsobjekts wie folgt:

%systemroot%\system32\inetsrv\APPCMD list config <URL> /section:SectionName

Dabei ist <URL> der Konfigurationspfad, in dem die effektive Konfiguration gelesen werden soll, z. B. „Default Web Site/“ oder „Default Web Site/app1/hello.html". Wenn nicht angegeben, wird standardmäßig die Serverebene verwendet.

Weitere Informationen zur IIS-Konfigurationshierarchie und zum Erstellen von IIS-Konfigurationspfaden für die Verwendung mit AppCmd und anderen Tools finden Sie unter Anatomie eines Konfigurationspfads für IIS7 und höher.

Der Abschnittsparameter gibt den Konfigurationsabschnitt an, den Sie lesen möchten. Wenn nicht angegeben, werden alle Konfigurationsabschnitte angezeigt, die auf URL-Ebene wirksam sind. In dieser Befehlszeile werden beispielsweise alle effektiven Konfigurationen für die Stammanwendung der Standardwebsite angezeigt:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/"

Verwenden Sie zum Auflisten eines bestimmten Abschnitts eine Befehlszeile wie die folgende:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp
<system.webServer>
  <asp>
    <session />
    <comPlus />
    <cache />
    <limits />
</asp>
</system.webServer>

Standardmäßig zeigt AppCmd nur die Konfiguration an, die explizit festgelegt ist. Wenn Sie die effektive Konfiguration einschließlich geerbter oder Standardwerte anzeigen möchten, geben Sie den Parameter /config:* an:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp /config:*

Verwenden Sie die folgenden Befehlszeilen, um eine Liste der verfügbaren Konfigurationsabschnitte anzuzeigen:

%systemroot%\system32\inetsrv\APPCMD list config /section:?

Bearbeiten der Konfigurationseigenschaften

In AppCmd wird jeder Konfigurationsabschnitt als Instanz eines Konfigurationsobjekts verfügbar gemacht, das Eigenschaften verfügbar macht, die den zugrunde liegenden Konfigurationsabschnitt darstellen. Verwenden Sie den SET-Befehl des Konfigurationsobjekts, um diese Eigenschaften zu ändern. Die Syntax lautet:

APPCMD set config <URL> /section:SectionName [ /property:value ]+

<URL> ist optional. Es gibt an, welcher Konfigurationspfad die Änderung übernehmen soll. Falls ausgelassen, werden Änderungen auf Serverebene angewendet, um von allen URLs geerbt zu werden.

Der Abschnittsparameter ist erforderlich. Er gibt den Abschnitt an, der bearbeitet wird.

So legen Sie beispielsweise die Eigenschaft appAllowClientDebug des ASP-Abschnitts für die URL http://localhost/app1 fest:

%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /appAllowClientDebug:false
CONFIG object "asp" changed

Verwenden Sie diese Elementpfadnotation, um Konfigurationseigenschaften festzulegen, die in Unterelementen des Konfigurationsabschnitts geschachtelt sind:

%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /limits.requestQueueMax:4000
CONFIG object "asp" changed

Geben Sie mehrere Eigenschaften in einer einzelnen Befehlszeile an, um mehrere Bearbeitungen innerhalb desselben Konfigurationsabschnitts vorzunehmen.

Verwenden Sie die folgende Befehlszeile, um alle Eigenschaften anzuzeigen, die für einen bestimmten Konfigurationsabschnitt festgelegt werden können:

%systemroot%\system32\inetsrv\APPCMD set config /section:asp /?

Hinweis

Beachten Sie, dass der ASP-Abschnitt standardmäßig gesperrt ist, sodass das Ausführen dieser Befehle einen Sperrverstoßfehler zurückgibt. Sie können entweder diesen Abschnitt zuerst entsperren, die Konfiguration auf Serverebene festlegen, indem Sie das <URL> weglassen, oder sie mit /commit:apphost an das Standort-Tag auf Serverebene übertragen. Weitere Informationen finden Sie unter Steuern des Standorts der Konfiguration in diesem Artikel.

Bearbeiten von Konfigurationssammlungen

AppCmd bietet auch Unterstützung für die Bearbeitung von Konfigurationssammlungen. Eine Konfigurationssammlung kann mehrere Elemente enthalten, z. B. enthält der Konfigurationsabschnitt system.webServer/modules eine Liste der Modulkonfigurationselemente, die die vom Server ausgeführten Module angeben.

Um eine Eigenschaft für ein Auflistungselement festzulegen, geben Sie das zu bearbeitende Auflistungselement mithilfe eines Auflistungsindexausdrucks innerhalb der Elementpfadnotation an. Der Indexerausdruck der Auflistung verwendet Schlüsselwerte, um ein bestimmtes Auflistungselement zu identifizieren. Der Indexer weist folgendes Format auf:

[key1='value1',key2='value2',...]

Die Anzahl der Schlüssel, die zum eindeutigen Identifizieren eines Elements erforderlich sind, hängt von der Auflistung ab. Für die meisten Auflistungen ist nur ein Schlüssel erforderlich.

Um beispielsweise die Typeigenschaft für das Auflistungselement mit der Schlüsselnameneigenschaft auf „FormsAuthentication“ festzulegen, verwenden Sie die folgende Befehlszeile:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /[name='FormsAuthentication'].type:System.Web.Security.FormsAuthenticationModule

Um ein neues Auflistungselement hinzuzufügen, präfixieren Sie die Elementpfadnotation mit einem Pluszeichen: +. Geben Sie innerhalb des Indexerausdrucks der Auflistung die Werte für jede Schlüsseleigenschaft an. Zusätzliche, nicht schlüsselbezogene Eigenschaften können auch im Auflistungsindexerausdruck enthalten sein. So wird beispielsweise ein neues Modulauflistungselement hinzugefügt:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /+[name='MyModule',type='MyType']

Um ein Auflistungselement zu löschen, präfixieren Sie die Elementpfadnotation mit einem Minuszeichen, -:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /-[name='MyModule']

Steuern des Konfigurationsstandorts

Das Konfigurationssystem ist hierarchisch, sodass Konfigurationseinstellungen auf mehreren Ebenen geschrieben werden können, von der Datei „ApplicationHost.config“ auf Serverebene bis hin zu verteilten Web.config-Dateien, die auf Standort-, Anwendungs- oder virtuellen Verzeichnisebenen vorhanden sein können.

Wenn die Konfiguration auf einer bestimmten Ebene geschrieben wird, wird sie von allen URLs auf dieser Ebene und niedriger geerbt. Konfigurationssatz in der Konfigurationsdatei „Web.config“ im Stammverzeichnis der Website, die von allen URLs der Website geerbt wird.

Standardmäßig schreibt AppCmd die Konfiguration auf der Ebene, auf der sie festgelegt wird. Wenn Sie beispielsweise die Konfiguration für die „Standardwebsite/“ festlegen, wird sie in einer Web.config-Datei im Stammverzeichnis dieser Website geschrieben.

Es ist jedoch möglich, die Konfiguration auf einer höheren Ebene zu schreiben und nur auf eine bestimmte Teilmenge der unten aufgeführten URLs anzuwenden, indem Sie ein Standortkonstrukt verwenden. Die Anwendung „Web.config“ kann z. B. eine Konfiguration enthalten, die nur auf ein einzelnes Verzeichnis in dieser Anwendung angewendet wird. AppCmd stellt diese Funktion über den Commit-Parameter bereit.

Der Commit-Parameter kann auf einen der folgenden Werte festgelegt werden:

  • (ausgelassen) — Standard; Schreiben der Konfiguration auf der Ebene, für die sie festgelegt ist
  • url — genau wie Standard; Schreiben der Konfiguration auf der Ebene, für die sie festgelegt ist
  • site – Schreiben der Konfiguration in der Web.config im Websitestamm der URL, für die sie festgelegt ist
  • app – Schreiben der Konfiguration in der Web.config im Appstamm der URL, für die sie festgelegt ist
  • apphost – Schreiben der Konfiguration auf Serverebene, in der Datei „applicationHost.config“
  • <PATH> — Schreiben der Konfiguration im angegebenen Konfigurationspfad

Beispielsweise deaktiviert diese Befehlszeile das Verzeichnisbrowsen für eine Anwendung und schreibt diese Konfiguration in der Datei „Web.config“ des Websitestamms:

%systemroot%\system32\inetsrv\APPCMD set config http://localhost/app1/ /section:directoryBrowse /enabled:false /commit:site

Weitere Informationen zu IIS-Konfigurationspfaden und zur Steuerung des Konfigurationsstandorts finden Sie unter Konfigurationspfad für die Anatomie von IIS7 und darüber.

Sperr- und Entsperrungskonfiguration

Das Konfigurationssystem ermöglicht die Sperrung von Konfigurationsabschnitten auf einer bestimmten Ebene, wodurch verhindert wird, dass ihre Eigenschaften auf niedrigeren Ebenen außer Kraft gesetzt werden. Dies kann verwendet werden, um zu verhindern, dass Anwendungen Einstellungen ändern, die der Serveradministrator erzwingen möchte.

Standardmäßig sind die meisten IIS-Konfigurationsabschnitte auf Serverebene gesperrt. Um diese Abschnitte auf niedrigeren Ebenen zu konfigurieren, müssen sie entsperrt werden. AppCmd stellt den Befehl ENTSPERREN für diesen Zweck bereit:

%systemroot%\system32\inetsrv\APPCMD unlock config /section:asp

Verwenden Sie den Befehl SPERREN, um einen Abschnitt zu sperren:

%systemroot%\system32\inetsrv\APPCMD lock config /section:asp

Beachten Sie, dass beim Sperren eines Konfigurationsabschnitts alle Anwendungen, die diesen Abschnitt möglicherweise bereits auf einer niedrigeren Ebene konfiguriert haben, einen Sperrverstoßfehler aufweisen, wenn sie versuchen, auf den Konfigurationsabschnitt zuzugreifen.

Suchkonfiguration

AppCmd kann die verteilte Konfigurationshierarchie nach allen Speicherorten durchsuchen, die bestimmte Konfigurationseigenschaften oder Eigenschaftswerte festlegen. Das Feature für die Konfigurationssuche kann verwendet werden, um Speicherorte anzuheften, an denen ein bestimmtes Feature aktiviert ist, oder um die Einhaltung einer bestimmten Konfigurationsanforderung sicherzustellen.

Um den Server nach allen Speicherorten zu durchsuchen, die die Konfiguration definieren, können Sie den Befehl SUCHEN ohne Argumente verwenden:

%systemroot%\system32\inetsrv\APPCMD search config

Um alle Speicherorte unter einem bestimmten Konfigurationspfad zu durchsuchen, z. B. alle Konfigurationsspeicherorte für einen bestimmten Standort, schließen Sie den Pfad in die Befehlszeile ein:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/"

So suchen Sie nach Speicherorten, die einen bestimmten Konfigurationsabschnitt konfigurieren:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse

Um nach Speicherorten zu suchen, die eine bestimmte Eigenschaft festlegen, schließen Sie den Eigenschaftennamen ein:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled

Und schließlich, um nach Speicherorten zu suchen, die eine Eigenschaft auf einen bestimmten Wert festlegen:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled:true

Arbeiten mit Toolausgabe

Wir haben bereits erwähnt, dass die Ausgabe des Befehls LIST eine Liste von Objektinstanzen ist. AppCmd bietet verschiedene Ausgabemodi, die die Kontrolle über die Detailebene ermöglichen, die zu jedem Objekt angezeigt wird.

Standardausgabe

Nehmen wir LIST-Websites als Beispiel. Standardmäßig verwendet AppCmd ein kompaktes Ausgabeformat:

%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)

In diesem Ausgabeformat befindet sich jede Objektinstanz in einer Zeile, wobei der Objekttyp (SITE) und der Bezeichner des Objekts („Standardwebsite“) angegeben werden. Mehrere gängige oder wichtige Eigenschaften werden im Allgemeinen auch ausgegeben (ID, Bindungen und Zustand für das Site-Objekt).

Detaillierte Ausgabe

Die meisten Objekte unterstützen wesentlich mehr Eigenschaften, als in der Standardausgabe dargestellt werden. Um alle Objekteigenschaften anzuzeigen, geben Sie den Text:*-Parameter an. Die Eigenschaften jeder Instanz werden in einem hierarchischen Strukturformat angezeigt:

APPCMD list site "Default Web Site" /text:*
SITE
  SITE.NAME: Default Web Site
  SITE.ID: 2
  bindings: http/*:80:
  state: Started
...

Im obigen Beispiel wurde die Ausgabe abgekürzt – die tatsächliche Ausgabe enthält viele weitere Eigenschaften.

Ausgabe für die Arbeit mit anderen Befehlszeilentools

AppCmd stellt einen Ausgabemodus bereit, der nur eine bestimmte Eigenschaft jeder Objektinstanz anzeigt. Geben Sie den Namen der Eigenschaft an, die mit dem Parameter text:<EIGENSCHAFT> angezeigt werden soll. Beispielsweise gibt dieser Befehl alle verfügbaren virtuellen Verzeichnisinstanzen zurück, wobei jeweils nur die physicalPath-Eigenschaft angezeigt wird:

%systemroot%\system32\inetsrv\APPCMD list vdirs /text:physicalPath
C:\inetpub\wwwroot
C:\inetpub\vdir1
D:\vdir2

Sie können natürlich eine der gültigen Eigenschaften des aufgelisteten Objekttyps anzeigen.

Es ist manchmal wünschenswert, die Ausgabe von AppCmd mit vorhandenen Befehlszeilentools und Shell-Befehlen wie dem FOR-Befehl und FINDSTR.EXE zu verwenden. Diese Tools funktionieren häufig am besten, wenn sich jedes interessante Datenelement in einer separaten Zeile befindet.

Stellen Sie sich beispielsweise eine Befehlszeile vor, die eine Verzeichnisauflistung jedes virtuellen IIS-Verzeichnisses erzeugt. Die Befehlszeile muss eine Liste der physischen Pfade aus jedem der virtuellen Verzeichnisse abrufen, die von Interesse sind, und führen Sie dann einen DIR-Befehl auf jedem dieser Pfade aus, indem Sie den Befehl FOR verwenden, um sie zu durchlaufen:

FOR /F %f IN ('%systemroot%\system32\inetsrv\APPCMD list vdir /text:physicalPath') DO CALL DIR %f

Ausgabe der Konfiguration

Viele der Objekte enthalten Konfigurationsdaten, die direkt aus den zugehörigen Konfigurationsabschnitten stammen. Das Konfigurationsobjekt ist das Hauptbeispiel dafür und dient als direkter Wrapper über das IIS-Konfigurationssystem. Jede Objektinstanz, die vom Config-Objekt zurückgegeben wird, ist ein Konfigurationsabschnitt. Andere Objekte, z. B. Site, enthalten auch Konfigurationsinformationen als Teil der Objekteigenschaften.

Wenn Sie die Konfigurationsinformationen für die zurückgegebenen Objekte im unformatierten XML-Format des Konfigurationssystems anzeigen möchten, können Sie den Konfigurationsparameter verwenden. Um beispielsweise die XML-Konfigurationsinformationen für das Websiteobjekt anzuzeigen, verwenden Sie eine Befehlszeile wie folgt:

%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site" /config
<site name="Default Web Site" id="1">
  <bindings>
        <binding protocol="HTTP" bindingInformation="*:80:" />
...

XML-Ausgabe

Das Tool unterstützt auch ein eigenes XML-Ausgabeformat, das wohlgeformte XML-Resultsets für die von der Befehlsausführung zurückgegebenen Objekte generiert. Dies ermöglicht einige spannende Funktionen, die AppCmd von allen vorherigen Befehlszeilentools unterscheiden, die vom IIS-Team bereitgestellt werden.

  • Erstellen komplexer Verwaltungsaufgaben. Der Hauptzweck dieser Möglichkeit besteht darin, die von AppCmd generierten Resultsets zu ermöglichen, in einen anderen AppCmd-Befehl einzugeben. Auf diese Weise können Sie komplexe Verwaltungsaufgaben schnell ausführen, ohne Anwendungscode zu schreiben.
  • Effizientes Ausführen von Batchvorgängen. Das Ausführen des Tools kann eine große Anzahl von Vorgängen (z. B. das Erstellen von 10.000 Websites) aufgrund des Aufwands der Prozesserstellung und Initialisierung für jeden Vorgang langsam sein. Stattdessen kann ein einzelner Toolbefehl über Eingabedaten ausgeführt werden, die in einem XML-Dataset enthalten sind, wodurch die Ausführungszeit der Verarbeitung der Eingabedaten erheblich reduziert wird.
  • Exportieren von Daten in andere Tools. Mit dem XML-Format können die von AppCmd generierten Datensätze mit anderen Tools verwendet werden, um Berichte zu verarbeiten, zu speichern oder bereitzustellen. Beispielsweise können AppCmd-Daten mit XSLT-Transformationen in allgemeine HTML-Verwaltungsberichte verwendet, in SQL Server 2005 zur weiteren Analyse importiert oder von ADO.NET für die programmgesteuerte Verarbeitung geladen werden.

Um beispielsweise die Liste der Websites im XML-Modus auszugeben:

%systemroot%\system32\inetsrv\APPCMD list sites /xml

Weitere Informationen zum Piping-Feature und zur Verwendung für eine leistungsfähige Befehlszeilenverwaltung finden Sie unter http://mvolo.com/do-complex-iis-management-tasks-easily-with-appcmd-command-piping/.

Zusammenfassung

In dieser Übersicht haben wir Sie mit allen verschiedenen leistungsstarken Befehlen vertraut, die mit dem Befehlszeilenprogramm IIS 7 und höher verfügbar sind, AppCmd.exe.

Sie finden außerdem weitere AppCmd-Themen und leistungsstarke Möglichkeiten zum Verwalten Ihres Servers über die Befehlszeile in meinem Blog unter http://mvolo.com/category/appcmd/.