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 iis bereitgestellte Cmdlets verwenden. Diese exemplarische Vorgehensweise basiert auf der Website, 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 sind sehr ähnlich wie Get-Item und Get-ItemProperty. Wenn "Get-Item*" nur für Namespace-Container (Websites, Apps, AppPools, VDirs) funktioniert, funktioniert "Get-WebConfiguration*" für jeden Abschnitt der IIS-Konfiguration.

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, und dann fragen wir die Authentifizierungseinstellungen in diesem Ordner ab. Gehen Sie 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 -filter-Parameter, um den konfigurationsabschnitt anzugeben, an dem wir interessiert sind, und den -name Parameter, 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 die eigenschaft -PSPath darüber verwenden. Hier ist ein Beispiel, wie Sie die Einstellungen für das Verzeichnisbrowsen 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

Mithilfe von "Set-WebConfigurationProperty"

Das Ändern der Einstellung ist so einfach wie:

Umgang mit gesperrten Abschnitten

Hier ist 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 AnwendungsdemoApp aktiviert. Die Konfiguration wird in applicationhost.config jedoch mithilfe eines Standorttags geschrieben. Klicken Sie hier auf , um weitere Informationen zu Sperr- und Standorttags zu erhalten.

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 Get-WebConfigurationProperty Befehl 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

Dies gilt auch für Get-Item vs. Get-ItemProperty im vorherigen Beispiel. Get-WebConfiguration liefert den gesamten Abschnitt statt nur einer Eigenschaft. 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 erhalten den Vorteil der Befehlsvollständigung.

Beispiel: Kopieren und Einfügen Sie nicht einfach. 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 möchten, 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-Standarddokumentsammlung:

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 Positionstags konfigurieren, wie Sie die Befehlszeilenvervollständigung nutzen und wie Sie Sammlungen Einträge hinzufügen.

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