共用方式為


PowerShell 嵌入式管理單元:變更組態區段中的簡單設定

作者 :Thomas Deml

在先前的逐步解說中,您已瞭解如何管理 IIS 命名空間容器,例如月臺、應用程式集區、應用程式和虛擬目錄。

在本逐步解說中,我們將管理未透過 IIS 命名空間公開的組態設定。

簡介

有數個 Cmdlet 可讓您變更無法透過 IIS 命名空間設定的 IIS 設定,亦即您無法使用內建 Cmdlet 來修改它們。 您必須改用 IIS 提供的 Cmdlet。 本逐步解說依賴我們在先前逐步解說中建立的網站、應用程式和虛擬目錄。

Get-WebConfiguration和Get-WebConfigurationProperty

Get-WebConfiguration和Get-WebConfigurationProperty可讓您取得 IIS 組態區段。 它們與 Get-Item 和 Get-ItemProperty 非常類似。 其中 Get-Item* 僅適用于網站、應用程式、AppPools、VDirs) Get-WebConfiguration* 的命名空間 (容器,適用于任何 IIS 組態區段。

查詢組態設定

讓我們看看我們先前建立的 DemoApp 應用程式上已啟用 directoryBrowse 區段的哪些設定。 首先,我們會流覽至 DemoApp 資料夾,然後查詢此資料夾中的驗證設定。 以下是執行此動作的方式:

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

在下一個範例中,我們使用 -filter 參數來指定我們感興趣的組態區段,並使用 -name 參數來指定我們想要查看的屬性。 如果您想要查看不是目前位置的區段設定,您可以使用該位置上的 -PSPath 屬性。 以下是如何在預設網站上查詢瀏覽目錄設定的範例:

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

使用Set-WebConfigurationProperty

變更設定就像下列一樣簡單:

處理鎖定的區段

以下是問題。 驗證區段通常會鎖定,也就是無法寫入web.config檔案,但必須改為寫入中央applicationhost.config檔案。 使用上述命令啟用 WindowsAuthentication 將會失敗,併發生鎖定違規:

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

您必須在這裡執行的動作是使用 -PSPath 和 -location 參數。 下列命令會啟用應用程式 DemoApp 的 Windows 驗證。 不過,組態會寫入applicationhost.config使用位置標籤。 按一下[],以尋找鎖定和位置標籤的詳細資訊。

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

不過,您不需要在查詢組態時指定位置。 一般Get-WebConfigurationProperty命令會顯示設定已啟用。

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

Get-WebConfiguration與Get-WebConfigurationProperty

這同樣適用于上一個範例中的Get-Item與Get-ItemProperty。 Get-WebConfiguration取得整個區段,而不是只取得 屬性。 這可讓您將 區段儲存至變數、修改區段屬性,並透過 Set-WebConfiguration 將區段儲存回。 而且您會獲得命令完成的優點。

範例如下。 不只複製並貼上。 探索 windowsAuthentication 區段的屬性。 輸入 $winAuth。 並叫用 < TAB > 鍵,逐一查看可用的屬性和函式。

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是一個 Cmdlet,如果您想要在 IIS 組態集合中新增一些專案,請使用此 Cmdlet。 處理常式、模組、預設檔設定,以及其他一些範例,其中 IIS 會使用集合來儲存多個值。

以下是如何將新的預設檔新增至 DemoApp 預設檔集合的範例:

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

此範例使用其他參數 -at。 這可讓您指定要在集合中加入新值的位置。 0 在開頭;-1 指定結尾。

總結

在本逐步解說中,您已瞭解如何使用 IIS 提供的 Web 組態 Cmdlet。 您已瞭解如何查詢組態設定、如何使用位置標記來設定設定、如何利用命令列完成,以及如何將專案新增至集合。

在下一個逐步解說中,您將瞭解如何使用進階 IIS 提供者功能來完成一些複雜的設定工作,例如萬用字元和 XPath。