共用方式為


PowerShell 嵌入式管理單元:使用 IIS PowerShell 嵌入式管理單元的工作型 Cmdlet

作者 :Thomas Deml

簡介

IIS PowerShell 嵌入式管理單元 Cmdlet 可以分成三個類別:

  • 提供者階層所需的 Cmdlet
  • 低階 configuratioin Cmdlet
  • 工作型 Cmdlet

本逐步解說介紹以工作為基礎的 IIS Cmdlet,並提供一些範例如何使用它們。

提供者階層所需的 Cmdlet

IIS 提早決定讓 IIS 組態成為月臺、應用程式、虛擬目錄和應用程式集區的階層。 優點是客戶可以在階層中流覽至位置,例如網站或應用程式,並在此內容中設定設定。 若要支援流覽階層,某些預先定義的 PowerShell Cmdlet,例如 New-Item、Set-ItemProperty等等。必須實作。 階層和這些內建 Cmdlet 已于 2008 年 4 月于 Tech Preview 1 中出貨。

低階設定 Cmdlet

IIS 組態系統已在第 7 版中完全修訂。 新的組態系統是完全以 XML 為基礎的架構驅動且完全可延伸。 新的 IIS FTP Server (FTP7) 和許多其他 IIS 模組,例如 URL 重寫器、WebDAV 等。利用這個擴充性來插入 IIS 組態系統。

此擴充性可讓您難以提供具有靜態引數的 Cmdlet。 假設有人擴充現有的組態區段,例如,有人將 myFancyNewBehavior 屬性新增至 virtualDirectory 組態區段。 若未修改 IIS Cmdlet fancyNewBehavior 設定,就無法透過 PowerShell 嵌入式管理單元 Cmdlet 來設定。

IIS PowerShell 嵌入式管理單元的 Technical Preview 1 僅包含採用帳戶中設定擴充性總計的低階 Cmdlet。 每個 IIS 組態設定 (超過 100 個組態區段與集合、列舉等) 都可以使用這些 Cmdlet 來設定。 這些低階 Cmdlet 也適用于自訂設定,例如,如果您使用自己的組態區段擴充 IIS 組態。

以下是我們在 2008 年 4 月回到 Tech Preview 1 之後隨附的低階 Cmdlet 清單:

Add-WebConfiguration                                                                               
Add-WebConfigurationProperty                                                                       
Begin-WebCommitDelay                                                                                  
Clear-WebConfiguration                                                                             
End-WebCommitDelay                                                                                    
Get-WebURL                                                                                            
Get-WebConfiguration                                                                               
Get-WebConfigurationProperty                                                                       
Get-WebItemState                                                                                   
Remove-WebConfigurationProperty                                                                    
Restart-WebItem                                                                                    
Set-WebConfiguration                                                                               
Set-WebConfigurationProperty   
Select-WebConfiguration                                                             
Start-WebItem                                                                                      
Stop-WebItem

以工作為基礎的 Cmdlet

以下是令人興奮的新聞。 對於建立網站、啟用要求追蹤、新增處理常式或模組等日常 IIS 工作,您可能想要使用 IIS PowerShell 嵌入式管理單元隨附的工作型 Cmdlet。 以下是工作型 Cmdlet 的清單:

Add-WebConfigurationLock
Backup-WebConfiguration
Clear-WebRequestTracingSettings
ConvertTo-WebApplication
Disable-WebGlobalModule
Disable-WebRequestTracing
Enable-WebGlobalModule
Enable-WebRequestTracing
Get-WebAppDomain
Get-WebApplication
Get-WebAppPoolState
Get-WebBinding
Get-WebConfigFile
Get-WebConfigurationBackup
Get-WebConfigurationLocation
Get-WebConfigurationLock
Get-WebFilePath
Get-WebGlobalModule
Get-WebHandler
Get-WebItemState
Get-WebManagedModule
Get-WebRequest
Get-Website
Get-WebsiteState
Get-WebURL
Get-WebVirtualDirectory
New-WebApplication
New-WebAppPool
New-WebBinding
New-WebFtpSite
New-WebGlobalModule
New-WebHandler
New-WebManagedModule
New-Website
New-WebVirtualDirectory
Remove-WebApplication
Remove-WebAppPool
Remove-WebBinding
Remove-WebConfigurationBackup
Remove-WebConfigurationLocation
Remove-WebConfigurationLock
Remove-WebGlobalModule
Remove-WebHandler
Remove-WebManagedModule
Remove-Website
Remove-WebVirtualDirectory
Rename-WebConfigurationLocation
Restart-WebAppPool
Set-WebBinding
Set-WebGlobalModule
Set-WebHandler
Set-WebManagedModule
Start-WebAppPool
Start-Website
Stop-WebAppPool
Stop-Website

工作型 Cmdlet 的說明

「使用內建說明系統是找出可用的 Cmdlet 以及如何使用 Cmdlet 的最簡單方式。 下列命令會列出所有 IIS Cmdlet。

get-command -pssnapin WebAdministration

另一種方式是尋找我們用於所有 IIS Cmdlet 的 -Web 前置詞。 請嘗試執行此命令:

get-command *-Web*

內建說明系統可讓您快速描述個別 Cmdlet、其採用的參數和引數,以及如何使用 Cmdlet 的範例。 嘗試下列作業:

get-help New-WebSite

若要接收特定 Cmdlet 的完整說明,您可以輸入下列各項:

get-help New-Website -full

如果您只想要查看如何使用的範例,請嘗試下列命令:

get-help New-Website -example

端對端範例

工作型 Cmdlet 的強大功能會顯示當您用於端對端案例時。 在下列範例中,我們將建立新的網站、將某些內容新增至網站、進行一些設定變更、啟用要求追蹤並要求新的內容頁面。

步驟 1:建立新的網站

輸入下列命令:

PS IIS:\>mkdir "$env:systemdrive\inetpub\MyNewWebSite"

這會為新的網站建立新的實體目錄。

PS IIS:\>New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81

上述這一行會建立新的網站,指向新建立的目錄,並在埠 81 上接聽。

步驟 2:將內容新增至網站

下列命令會巡覽 IIS 命名空間,並建立新的內容檔案。

PS IIS:\>cd IIS:\sites\MyNewWebsite

上述命令會巡覽至 IIS 命名空間中的 MyNewWebSite 節點。

PS IIS:\Sites\MyNewWebSite> dir

上述命令會列出新網站的所有內容。 它不會顯示任何內容,因為沒有任何內容。

PS IIS:\Sites\MyNewWebSite> notepad "$(Get-WebFilePath .)\test.htm"

上述命令會開啟記事本,並可讓您編輯test.htm。 您不需要記住網站實體路徑的位置。 輸入一些文字,例如「Hello World」,並將檔案儲存在記事本中。

PS IIS:\Sites\MyNewWebSite> dir

如果您再次輸入 dir 命令,它會顯示新建立的檔案test.htm。

PS IIS:\Sites\MyNewWebSite> Get-WebURL -content ".\test.htm"

上述命令會對新建立的網站提出 HTTP 要求,並傳回您在記事本中輸入的內容。

步驟 3:啟用要求追蹤

重要事項:若要讓此範例能夠運作,必須啟用 IIS 追蹤功能。 在 Windows Vista 上開啟主控台,按一下 [程式],選取 [開啟或關閉 Windows 功能]。 在 [網際網路資訊服務]、[全球網路服務]、[健康情況和診斷] 下尋找並選取 [追蹤],然後按一下 [確定]。

在最後一個步驟中,我們會啟用要求追蹤。 Web 要求追蹤是一項 IIS 功能,可讓您取得執行要求期間所發生的詳細記錄。 這項功能對於許多疑難排解案例而言非常有價值。 若要啟用 Web 要求追蹤,我們只需要執行另一個名為 Enable-WebRequestTracing 的位置感知 Cmldet。

PS IIS:\Sites\MyNewWebSite> Enable-WebRequestTracing

現在讓我們看看web.config檔案,Enable-WebRequestTracing Cmdlet 所撰寫的組態。 我們會使用Get-WebConfigFile Cmdlet 來執行這項操作,這也是位置感知:

PS IIS:\Sites\MyNewWebSite> notepad (Get-WebConfigFile)

此設定看起來如下:

web.config檔案的內容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:30" statusCodes="200-500" verbosity="Warning" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>
</configuration>

重要的設定是 failureDefinitions 規則。 根據預設,當錯誤碼介於 200 到 500 之間,或要求花費超過 30 秒時,就會產生追蹤檔案。 讓我們執行下列命令,發出在 200-500 錯誤範圍中產生回應的要求:

PS IIS:\Sites\MyNewWebSite>Get-WebURL -url http://localhost:81/URL_DOES_NOT_EXIST

對非現有資源的要求會產生 404 錯誤。 若要查看追蹤檔案,您必須流覽至下列位置:

PS IIS:\Sites\MyNewWebSite>cd "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\"

現在,您可以在 Internet Explorer 中開啟 xml 檔案來查看追蹤檔案:

PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"

總結

新的工作型 Cmdlet 可讓系統管理員輕鬆地使用 PowerShell 完成日常 IIS 工作。 Cmdlet 提供位置感知和直覺式語法和說明。

自 Tech Preview 1 起隨附的低階 IIS Cmdlet 仍會允許更進階的 IIS 系統管理工作。