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 設定工作。 下一個逐步解說將討論如何探索狀態和執行時間資料。