共用方式為


PowerShell 嵌入式管理單元:建立網站、Web 應用程式、虛擬 Dirs 和應用程式集區

作者 :Thomas Deml

在本逐步解說中,您將瞭解如何建立網站、Web 應用程式、虛擬目錄和應用程式集區。

簡介

IIS PowerShell 命名空間包含網站、應用程式、虛擬目錄和應用程式集區等專案。 使用內建的 PowerShell Cmdlet,建立新的命名空間專案並加以管理非常簡單。

建立Web-Sites

如果您熟悉 PowerShell,您知道New-Item Cmdlet 是用來在各種 PowerShell 命名空間中建立新專案。 此命令 New-Item c:\TestDirectory 會建立新的檔案系統目錄,例如, (大部分的人都會使用 MDMKDIR 別名, New-Item 不過) 。 New-Item 也可用來在 IIS PowerShell 命名空間內建立新的Web-Sites。

參數

當您建立新的檔案系統目錄時,指定目錄的名稱是唯一需要的引數。 不幸的是,當您建立網站時,這並不夠。 建立網站需要其他參數,例如檔案系統路徑和網路系結。 以下是建立新Web-Site後面接著 dir 命令的命令:

PS IIS:\Sites> New-Item iis:\Sites\TestSite -bindings @{protocol="http";bindingInformation=":80:TestSite"} -physicalPath c:\test
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:
TestSite         2    Started    c:\test                        http :80:TestSite

使用 -physicalPath 引數相當簡單。 但您可能會問自己為什麼 -bindings 引數看起來很複雜。

使用的建構是 (移至的雜湊表,以深入瞭解 PowerShell 雜湊表) 。 在雜湊表索引鍵=值組內,表示反映 IIS 月臺系結區段中屬性的設定:

<bindings>
    <binding protocol="http" bindingInformation=":80:TestSite" />
</bindings>

現在,以下是我們使用雜湊表的原因:IIS 設定完全可擴充 (請參閱這裡的,以取得其他區段和屬性) 的詳細資料。 您可以想像有人使用其他屬性來擴充 < 綁定 > 項。 雜湊表內的索引鍵值組可讓您彈性地納入這些新屬性,而不需要完全重寫 IIS PowerShell 嵌入式管理單元。

授與,語法有點複雜。 我們正在考慮包裝一些典型的工作,例如在稍後的 Tech Preview 中使用其他函式或腳本建立網站。

刪除網站

以下是您刪除剛才建立的網站的方式。

PS IIS:\ >Remove-Item IIS:\Sites\TestSite

建立 Web 應用程式

建立 Web 應用程式比建立網站更容易。 來吧:

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp' -physicalPath c:\test -type Application
Name                     ApplicationPool          EnabledProtocols         PhysicalPath
----                     ---------------          ----------------         ------------
DemoApp                  DefaultAppPool           http                     c:\test

您唯一必須指定的參數是類型 (類型) ,因為在Web-Site底下,您可能想要建立應用程式或虛擬目錄。 藉由指定 -type 參數,您可以指示 IIS 嵌入式管理單元建立應用程式。

若要刪除應用程式,您也可以使用 Remove-Item。

建立虛擬目錄

若要建立虛擬目錄,您也可以使用 New-Item Cmdlet。 讓我們在「預設網站」底下建立虛擬目錄,但在我們在上一個步驟中建立的 Web 應用程式底下建立第二個虛擬目錄。

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoVirtualDir1' -type VirtualDirectory -physicalPath c:\test\virtualDirectory1
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir1                                   c:\test\virtualDirectory1

PS IIS:\> New-Item 'IIS:\Sites\Default Web Site\DemoApp\DemoVirtualDir2' -type VirtualDirectory -physicalPath c:\test\virtualDirectory2
Name                                              PhysicalPath
----                                              ------------
DemoVirtualDir2                                   c:\test\virtualDirectory2

建立應用程式集區

但它會變得更簡單。 建立新的 AppPool 只需要指定名稱。

PS IIS:\> new-item AppPools\DemoAppPool
Name                     State
----                     -----
DemoAppPool              {}

簡單,不是嗎? 現在讓我們將這放在端對端案例中。

全部組合在一起

在下列端對端案例中,我們將執行下列步驟:

  1. 為網站、Web 應用程式和虛擬目錄建立一組新的檔案系統目錄,我們稍後會建立一些。
  2. 將一些非常簡單的 Web 內容複寫到新建立的目錄中。
  3. 建立新的應用程式集區
  4. 建立新的網站、新的應用程式和兩個新的虛擬目錄,並將其指派給新建立的應用程式集區。
  5. 透過網頁瀏覽器要求 Web 內容。

步驟 1:建立新目錄

我們使用 New-Item Cmdlet 來建立四個新的檔案系統目錄。 如果您不想指定 -type 參數) ,請執行下列命令, (使用 'md' 而不是New-Item:

New-Item C:\DemoSite -type Directory
New-Item C:\DemoSite\DemoApp -type Directory
New-Item C:\DemoSite\DemoVirtualDir1 -type Directory
New-Item C:\DemoSite\DemoVirtualDir2 -type Directory

步驟 2:複製內容

現在讓我們將這些目錄撰寫一些簡單的 HTML 內容:

Set-Content C:\DemoSite\Default.htm "DemoSite Default Page"
Set-Content C:\DemoSite\DemoApp\Default.htm "DemoSite\DemoApp Default Page"
Set-Content C:\DemoSite\DemoVirtualDir1\Default.htm "DemoSite\DemoVirtualDir1 Default Page"
Set-Content C:\DemoSite\DemoVirtualDir2\Default.htm "DemoSite\DemoApp\DemoVirtualDir2 Default Page"

步驟 3:建立新的應用程式集區

如果您刪除我們在上一個範例中建立的新應用程式集區 'DemoAppPool',請為新網站建立新的應用程式集區。

New-Item IIS:\AppPools\DemoAppPool

注意

如果 WebAdministration 模組尚未匯入,上述 Cmdlet 將會失敗。 若要這樣做,您可以將下列 Cmdlet 新增為包含上述 Cmdlet 之腳本的第一個步驟:

Import-Module "WebAdministration"

步驟 4:建立新的網站、Web 應用程式和虛擬目錄,並指派給應用程式集區

以下是一個好吃的。 我們會建立 DemoSite、DemoApp 和兩個虛擬目錄 - DemoVirtualDir1 直接在 DemoSite 下方,而 DemoVirtualDir2 位於 DemoApp 下方。 我們會將 DemoSite 和 DemoApp 指派給在上一個步驟中建立的 DemoAppPool。 DemoSite 已指派給埠 8080,而不會與「預設網站」衝突

New-Item IIS:\Sites\DemoSite -physicalPath C:\DemoSite -bindings @{protocol="http";bindingInformation=":8080:"}
Set-ItemProperty IIS:\Sites\DemoSite -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoApp -physicalPath C:\DemoSite\DemoApp -type Application
Set-ItemProperty IIS:\sites\DemoSite\DemoApp -name applicationPool -value DemoAppPool
New-Item IIS:\Sites\DemoSite\DemoVirtualDir1 -physicalPath C:\DemoSite\DemoVirtualDir1 -type VirtualDirectory
New-Item IIS:\Sites\DemoSite\DemoApp\DemoVirtualDir2 -physicalPath C:\DemoSite\DemoVirtualDir2 -type VirtualDirectory

瞧。 剩下的就是要求 Web 內容。

步驟 5:要求 Web 內容

當然,您可以開啟瀏覽器,然後輸入 http://localhost:8080/ 和所有其他 URL。 但這是 PowerShell 逐步解說,我們將使用 PowerShell 來執行此作業,方法是使用 .NET WebClient 類別:

$webclient = New-Object Net.WebClient
$webclient.DownloadString("http://localhost:8080/");
$webclient.DownloadString("http://localhost:8080/DemoApp");
$webclient.DownloadString("http://localhost:8080/DemoVirtualDir1");
$webclient.DownloadString("http://localhost:8080/DemoApp/DemoVirtualDir2");

如果您覺得有問世,您也可以使用 Internet Explorer 物件本身:

$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate("http://localhost:8080/");

總結

在本逐步解說中,您已瞭解如何使用 PowerShell 建立網站、Web 應用程式、虛擬目錄和應用程式集區。 其他 PowerShell 功能是用來建置功能端對端案例。