共用方式為


PowerShell 嵌入式管理單元:對網站和應用程式集區進行設定變更

作者 :Thomas Deml

在本逐步解說中,您將瞭解如何使用內建 PowerShell Cmdlet 來變更 IIS 命名空間容器的簡單屬性,例如網站、Web 應用程式、虛擬目錄和應用程式集區。 下一個逐步解說將說明如何在 system.webServer 區段和自訂區段上變更組態屬性。

簡介

PowerShell 嵌入式管理單元的工作是提供可使用一般、內建的 PowerShell Cmdlet 來管理的命名空間,例如 New-Item、Get-Item、Get-ChildItems、Set-Item、Set-ItemProperty等。 內建 Cmdlet 會針對所有 PowerShell 提供的命名空間運作。 New-Item c:\testdir例如,可讓您建立新的檔案系統目錄,但您也可以建立新的 IIS 物件,例如Web-Site或應用程式集區。 New-Item IIS:\AppPools\NewAppPool

在上一個逐步解說中,我們開始使用 New-item 和 Get-Item Cmdlet。 本逐步解說將探索更多內建 Cmdlet。

建立這些專案之後,通常您可能必須變更這些專案的設定。 若要這樣做,我們會使用內建 Cmdlet New-ItemProperty 和 Set-ItemProperty。 我們也會看到如何使用 Get-Item 和 Set-Item。

本逐步解說依賴我們在上一個逐步解說中建立的Web-Site「示範網站」及其 Web 應用程式和虛擬目錄。

查看組態設定

開始變更設定之前,我們要先查看這些設定。 以下是查看 'DemoSite' 組態設定的命令。

PS IIS:\> get-item IIS:\Sites\DemoSite
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
DemoSite         2    Started    c:\demosite                    http :8080:

這可讓您檢視網站最重要的屬性。 不過,您可能有興趣更多設定。

以下是提供更多詳細資料的命令:

(Get-ItemProperty IIS:\Sites\DemoSite -Name bindings).Collection

在上述範例中,我們使用括弧,因為必須先評估Get-ItemProperty呼叫,才能列印集合專案。 在此情況下,與數學相同: (5 + 4) * 3 會先評估 5 + 4,然後再乘以 3。 在此情況下,將會評估Get-ItemProperty命令的結果,而產生的 IIS 組態物件包含我們輸出到畫面的集合。

您可以將相同的策略與其他屬性或集合搭配使用,例如 AppPools processModel 區段。 下列命令範例會針對 DemoAppPool 的 startupTimeLimit 傳回良好的 DateTime 物件:

PS IIS:\> (Get-ItemProperty IIS:\AppPools\DemoAppPool -name processModel).startupTimeLimit

Days              : 0
Hours             : 0
Minutes           : 1
Seconds           : 30
Milliseconds      : 0
Ticks             : 900000000
TotalDays         : 0.00104166666666667
TotalHours        : 0.025
TotalMinutes      : 1.5
TotalSeconds      : 90
TotalMilliseconds : 90000

變更網站和 AppPool 設定

有兩種進行變更的基本方式。

  1. 如果您要變更簡單屬性,請使用 Set-ItemProperty。
  2. 如果您要處理集合,而且想要新增集合專案,請使用 New-ItemProperty。 在 IIS 預設中,系結集合是 IIS 命名空間中唯一使用的集合。

Set-ItemProperty和New-ItemProperty

讓我們從將其他系結新增至 DemoSite 開始:

PS IIS:\> New-ItemProperty IIS:\sites\DemoSite -name bindings -value @{protocol="http";bindingInform
ation=":8081:"}

PS IIS:\> dir IIS:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
DemoSite         2    Started    c:\demosite                    http :8080:
                                                                http :8081:

如您所見,DemoSite 現在也會接聽埠 8081。

如果您想要修改現有的屬性,請使用 Set-ItemProperty。 變更網站的名稱,例如:

PS IIS:\> Set-ItemProperty IIS:\Sites\DemoSite -name name -value NewDemoSite
PS IIS:\> dir iis:\Sites
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
NewDemoSite      2    Started    c:\demosite                    http :8080:
                                                                http :8081:

讓我們將它變更回舊名稱:

PS IIS:\> Set-ItemProperty IIS:\Sites\NewDemoSite -name name -value DemoSite

我們也想要變更應用程式集區執行身分識別。 不過,我們必須建立使用者。 讓我們使用 ADSI 來執行此動作

$computer = [ADSI]"WinNT://."
$user = $computer.Create("user", "DemoAppPoolUser")
$user.SetPassword("Secret!!Pw3009")
$user.SetInfo()

現在我們已準備好設定 DemoAppPool 以以此使用者身分執行:

Set-ItemProperty iis:\apppools\DemoAppPool -name processModel -value @{userName="DemoAppPoolUser";password="Secret!!Pw3009";identitytype=3}

為了可延伸,我們會針對屬性名稱和其值使用良好的舊雜湊表。 如果您忘記如何使用它,以下是 連結

Set-Item和Get-Item

讓我們執行相同的動作,也就是使用 set-item/get-item 下拉式,將使用者指派給應用程式集區。 您可能會喜歡此變體,因為它可讓您利用命令列完成。 若要查看運作方式,請勿複製並貼上下列命令。 輸入幾個字元,並使用 TAB 鍵來享有命令列完成的優點:

PS IIS:\AppPools> $demoPool = Get-Item IIS:\AppPools\DemoAppPool
PS IIS:\AppPools> $demoPool.processModel.userName = "DemoAppPoolUser"
PS IIS:\AppPools> $demoPool.processModel.password = "Secret!!Pw3009"
PS IIS:\AppPools> $demoPool.processModel.identityType = 3
PS IIS:\AppPools> $demoPool | Set-Item

總結

在本逐步解說中,您已瞭解如何使用 PowerShell 提供的 Cmdlet 來管理 IIS 命名空間容器,例如月臺和應用程式集區。 您已瞭解如何使用雜湊表,以及如何利用命令列完成。 在下一個逐步解說中,您將瞭解如何使用 IIS 嵌入式管理單元 Cmdlet,對未透過 IIS 嵌入式管理單元命名空間公開的 IIS 組態設定進行設定變更。