共用方式為


PowerShell 嵌入式管理單元:進階設定工作

作者 :Thomas Deml

在本逐步解說中,您將瞭解如何使用 XPath 查詢和萬用字元完成一些進階設定工作。

簡介

先前的逐步解說將為您介紹 *-WebConfiguration 和 *-WebConfigurationProperty Cmdlet。 這些 Cmdlet 多於符合眼睛。 -filter 參數不只是指定組態區段的方式。 這是 XPath 查詢,在本逐步解說中,我們將探索如何利用它。 您也可以使用 wilcards 搭配 *-WebConfiguration* 命令的一些好方法。

本逐步解說會使用先前範例中建立的網站、應用程式和虛擬目錄。

使用 XPath 查詢

以下是一個簡單的範例,示範如何搭配使用 wilcards 與 Get-WebConfigurationProperty Cmdlet:

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //defaultDocument/files -name Collection[value="index*"] | select value

另一個。 在這裡,將會由ASPNET_ISAPI.DLL執行的所有處理常式對應:

PS IIS:\Sites\DemoSite\DemoApp> Get-WebConfigurationProperty -filter //handlers -name Collection[scriptProcessor="*aspnet_isapi.dll"]  | select name,path
name                                              path
----                                              ----
svc-ISAPI-2.0-64                                  *.svc
svc-ISAPI-2.0                                     *.svc
AXD-ISAPI-2.0                                     *.axd
PageHandlerFactory-ISAPI-2.0                      *.mspx
SimpleHandlerFactory-ISAPI-2.0                    *.ashx
WebServiceHandlerFactory-ISAPI-2.0                *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0          *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0         *.soap
AXD-ISAPI-2.0-64                                  *.axd
PageHandlerFactory-ISAPI-2.0-64                   *.mspx
SimpleHandlerFactory-ISAPI-2.0-64                 *.ashx
WebServiceHandlerFactory-ISAPI-2.0-64             *.asmx
HttpRemotingHandlerFactory-rem-ISAPI-2.0-64       *.rem
HttpRemotingHandlerFactory-soap-ISAPI-2.0-64      *.soap

假設您不喜歡 ASP.Net 檔案的 .aspx 副檔名太多,而且您想要將所有 IIS 處理常式對應從 *.aspx 變更為 *.mspx。 它可能比這個短嗎?

PS IIS:\Sites\DemoSite\DemoApp> set-webconfiguration "/system.webServer/handlers/add[@path='*.aspx']/@path" -value "*.mspx"

讓我們看看是否已設定變更:

(get-webconfiguration //handlers).collection | select name,path

現在如何查看組態檔本身。 我們可以使用我們在上一個逐步解說中探索的 get-item Cmdlet。

PS IIS:\Sites\DemoSite\DemoApp> get-content (((get-item .).physicalPath).ToString() + "\web.config")
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
         <handlers>
            <remove name="PageHandlerFactory-ISAPI-2.0-64" />
            <remove name="PageHandlerFactory-ISAPI-2.0" />
            <remove name="PageHandlerFactory-Integrated" />
            <add name="PageHandlerFactory-Integrated" path="*.mspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
            <add name="PageHandlerFactory-ISAPI-2.0" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
            <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.mspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
        </handlers>
    </system.webServer>
</configuration>

您可以看到組態系統已移除舊的處理常式,並將其取代為現在對應至 *.mspx 的新處理常式。

探索 IIS 組態

如果您知道要設定的內容,這很好。 但如果您不這麼做,該怎麼辦。 以下是一些協助程式。

顯示可用的 IIS 組態區段

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | select SectionPath

顯示您可以在特定區段上設定的屬性:

get-webconfiguration system.webServer/caching | select -exp Attributes | select Name

將兩者放在一起,也就是顯示所有區段及其屬性。

get-webconfiguration //* | where {$_.psbase.SectionPath -like "*" -and $_.psbase.SectionPath.length -gt 0} | foreach {$_.SectionPath.ToUpper();get-webconfiguration $_.SectionPath | select -exp Attributes | select Name;"`n"} | more

我們可能會在稍後的 Tech Preview 中將這些命令封裝到某些函式中,但這是您目前取得的內容:) 。

總結

在本逐步解說中,您已瞭解如何使用萬用字元和 XPath 查詢來完成複雜的 IIS 設定工作。 下一個逐步解說將討論如何探索狀態和執行時間資料。