Freigeben über


PowerShell-Snap-In: Ändern einfacher Einstellungen in Konfigurationsabschnitten

von Thomas Deml

In der vorherigen exemplarischen Vorgehensweise haben Sie erfahren, wie Sie IIS-Namespacecontainer wie Websites, Anwendungspools, Anwendungen und virtuelle Verzeichnisse verwalten.

In dieser exemplarischen Vorgehensweise verwalten wir Konfigurationseinstellungen, die nicht über den IIS-Namespace verfügbar gemacht werden.

Einführung

Es gibt mehrere Cmdlets, mit denen Sie IIS-Einstellungen ändern können, die nicht über den IIS-Namespace konfiguriert werden können, d. h. Sie können keine integrierten Cmdlets verwenden, um sie zu ändern. Sie müssen stattdessen von IIS bereitgestellte Cmdlets verwenden. Diese exemplarische Vorgehensweise basiert auf der Website, den Anwendungen und virtuellen Verzeichnissen, die wir in früheren exemplarischen Vorgehensweisen erstellt haben.

Get-WebConfiguration und Get-WebConfigurationProperty

Mit „Get-WebConfiguration“ und „Get-WebConfigurationProperty“ können Sie IIS-Konfigurationsabschnitte abrufen. Sie ähneln „Get-Item“ und „Get-ItemProperty“ sehr. „Get-Item*“ funktioniert nur für Namespacecontainer (Websites, Apps, AppPools, VDirs), „Get-WebConfiguration*“ funktioniert hingegen für jeden IIS-Konfigurationsabschnitt.

Abfragen von Konfigurationseinstellungen

Sehen wir uns an, welche Einstellungen für den Abschnitt „directoryBrowse“ in der zuvor erstellten DemoApp-Anwendung aktiviert sind. Zuerst navigieren wir zum DemoApp-Ordner. Dann fragen wir die Authentifizierungseinstellungen in diesem Ordner ab. Gehen Sie dazu wie folgt vor:

PS IIS:\> cd IIS:\Sites\DemoSite\DemoApp
PS IIS:\Sites\DemoSite\DemoApp> dir
Type               Name                             Physical Path
----               ----                             -------------
file               Default.htm                      C:\DemoSite\DemoApp\Default.htm
virtualDirectory   DemoVirtualDir2                  C:\DemoSite\DemoVirtualDir2

Im nächsten Beispiel verwenden wir den Parameter „-filter“, um den Konfigurationsabschnitt anzugeben, an dem wir interessiert sind, und den Parameter „-name“, um anzugeben, welche Eigenschaft wir betrachten möchten. Wenn Sie die Einstellungen eines Abschnitts anzeigen möchten, der nicht der aktuelle Speicherort ist, können Sie auch die „-PSPath“-Eigenschaft verwenden. Hier ist ein Beispiel, wie Sie die Einstellungen für die Verzeichnissuche auf der Standardwebsite abfragen würden:

Get-WebConfigurationProperty -filter /system.webServer/directoryBrowse -name enabled -PSPath 'IIS:\Sites\Default Web Site'
ItemXPath                   : /system.webServer/directoryBrowse
IsInheritedFromDefaultValue : False
IsProtected                 : False
Name                        : enabled
TypeName                    : System.Boolean
Schema                      : Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeSchema
Value                       : False
IsExtended                  : False

Verwenden von „Set-WebConfigurationProperty“

Das Ändern der Einstellung ist so einfach wie:

Der Umgang mit gesperrten Abschnitten

Hier gibt es ein Problem. Authentifizierungsabschnitte sind in der Regel gesperrt, d. h. sie können nicht in eine Web.config-Datei geschrieben werden, müssen aber stattdessen in die zentrale applicationhost.config-Datei geschrieben werden. Die Verwendung des obigen Befehls zum Aktivieren der WindowsAuthentication schlägt mit einem Sperrverstoß fehl:

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true
Set-WebConfigurationProperty : This configuration section cannot be used at this path. This happens
 when the section is locked at a parent level. Locking is either by default (overrideModeDefault="D
eny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="fa
lse".
At line:1 char:29
+ Set-WebConfigurationProperty  <<<< -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true

Hier müssen Sie den Parameter „-PSPath“ und „-location“ verwenden. Mit dem folgenden Befehl wird die Windows-Authentifizierung für die Anwendung „DemoApp“ aktiviert. Die Konfiguration wird jedoch mithilfe eines Speicherorttags in „applicationhost.config“ geschrieben. Klicken Sie hier, um weitere Informationen zu Sperr- und Speicherorttags zu finden.

PS IIS:\Sites\DemoSite\DemoApp> Set-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled -value true -PSPath IIS:\ -location DemoSite/DemoApp

Beim Abfragen der Konfiguration müssen Sie keine Speicherorte angeben. Der reguläre Befehl „Get-WebConfigurationProperty“ zeigt Ihnen, dass die Einstellung aktiviert ist.

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter /system.webServer/security/authentication/windowsAuthentication -name enabled
True

Get-WebConfiguration vs. Get-WebConfigurationProperty

Dasselbe gilt für „Get-Item“ vs. „Get-ItemProperty“ im vorherigen Beispiel. „Get-WebConfiguration“ ruft den gesamten Abschnitt anstelle einer Eigenschaft ab. Auf diese Weise können Sie den Abschnitt in einer Variablen speichern, Änderungen an den Abschnittseigenschaften vornehmen und den Abschnitt über „Set-WebConfiguration“ wieder speichern. Und Sie profitieren von der Befehlsvervollständigung.

Beispiel: Nicht einfach kopieren und einfügen. Erkunden Sie die Eigenschaften des Abschnitts „windowsAuthentication“. Geben Sie „$winAuth“ ein. Und drücken Sie die <TAB-TASTE>, um die verfügbaren Eigenschaften und Funktionen zu durchlaufen.

PS IIS:\Sites\DemoSite\DemoApp> $winAuth = Get-WebConfiguration -filter /system.webServer/security/authentication/windowsAuthentication 
PS IIS:\Sites\DemoSite\DemoApp> $winAuth.enabled = $false
PS IIS:\Sites\DemoSite\DemoApp> $winAuth | set-Webconfiguration -filter /system.webServer/security/authentication/windowsAuthentication -PSPath IIS:\ -location "DemoSite/DemoApp"

Add-WebConfiguration

„Add-WebConfiguration“ ist ein Cmdlet, das Sie verwenden können, wenn Sie einer IIS-Konfigurationsauflistung etwas hinzufügen müssen. Handler, Module, Standarddokumenteinstellungen und einige andere Beispiele, in denen IIS eine Sammlung zum Speichern mehrerer Werte verwendet.

Hier ist ein Beispiel zum Hinzufügen eines neuen Standarddokuments zur DemoApp-Standarddokumentauflistung:

PS IIS:\Sites\DemoSite\DemoApp>Add-WebConfiguration /system.webServer/defaultDocument/files  "IIS:\sites\Default Web Site" -at 0 -value
@{value="new-index.html"}

Im Beispiel wird der zusätzliche Parameter „-at“ verwendet. Auf diese Weise können Sie angeben, wo in der Auflistung der neue Wert hinzugefügt werden soll. 0 ist am Anfang; -1 gibt das Ende an.

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben Sie erfahren, wie Sie die von IIS bereitgestellten Webkonfigurations-Cmdlets verwenden. Sie haben erfahren, wie Sie Konfigurationseinstellungen abfragen, wie Sie Einstellungen mithilfe von Speicherorttags konfigurieren, wie Sie die Befehlszeilenvervollständigung nutzen und wie Sie Auflistungen Einträge hinzufügen.

In der nächsten exemplarischen Vorgehensweise erfahren Sie, wie Sie einige komplexe Konfigurationsaufgaben mithilfe erweiterter IIS-Anbieterfeatures wie der Verwendung von Platzhaltern und XPath ausführen.