PowerShell 嵌入式管理單元:建立網站、Web 應用程式、虛擬 Dirs 和應用程式集區
作者 :Thomas Deml
在本逐步解說中,您將瞭解如何建立網站、Web 應用程式、虛擬目錄和應用程式集區。
簡介
IIS PowerShell 命名空間包含網站、應用程式、虛擬目錄和應用程式集區等專案。 使用內建的 PowerShell Cmdlet,建立新的命名空間專案並加以管理非常簡單。
建立Web-Sites
如果您熟悉 PowerShell,您知道New-Item Cmdlet 是用來在各種 PowerShell 命名空間中建立新專案。 此命令 New-Item c:\TestDirectory
會建立新的檔案系統目錄,例如, (大部分的人都會使用 MD
或 MKDIR
別名, 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 {}
簡單,不是嗎? 現在讓我們將這放在端對端案例中。
全部組合在一起
在下列端對端案例中,我們將執行下列步驟:
- 為網站、Web 應用程式和虛擬目錄建立一組新的檔案系統目錄,我們稍後會建立一些。
- 將一些非常簡單的 Web 內容複寫到新建立的目錄中。
- 建立新的應用程式集區
- 建立新的網站、新的應用程式和兩個新的虛擬目錄,並將其指派給新建立的應用程式集區。
- 透過網頁瀏覽器要求 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 功能是用來建置功能端對端案例。