共用方式為


IIS:快速且方便的網頁伺服器

您可以使用 Windows PowerShell 來以更快速且更輕鬆的方式安裝網頁伺服器。

Jason Helmick

想想多少次您安裝 IIS。 不多? 真的嗎? 考慮這類交流和必備的軟體,如需要 IIS 的 SharePoint 測試環境和發展環境的 Web 場部署平臺。 你可能會花更多的時間比你想安裝 IIS。

將添加到此自動化災難恢復需要。 您可以在幾分鐘內帶您 Web 場重新連線嗎? 安裝和配置 IIS 隨您的 Web 網站是一個簡單的任務。 這是一個長又乏味的過程,如果你有很多的伺服器。

沒有人想要度過週末設置伺服器。 要管理您的 Web 場的 Web 網站,並把所有的 Web"東西"星期一到星期五,朝九晚五。 你想要加快和自動化的任務,你在工作中的每一個機會。

本分步指南將説明您部署 IIS 和預設 Web 網站的伺服器,伺服器的一大串次全部在四分鐘的時間。 你不能這樣與 GUI 伺服器管理器工具和 GUI IIS 管理器。 事實上,GUI 是問題的一部分。 你怎麼可以這些神奇的玩意兒? Windows PowerShell。 (附註:這適用于 IIS 7.5 和 IIS 8。)

PowerShell 遠端處理

我們開始之前,你有你的伺服器上啟用 Windows PowerShell 遠端處理嗎? 如果您不是應該的。 這就是這一計畫將如何工作。 我們的快速、 方便的一部分來部署之前,讓我們走過了如何獲取萬一您還沒有這樣做已經啟用了 Windows PowerShell 遠端處理。

有兩種方法來執行此操作。 如果你要試試這個在測試環境中,則第一種方法可能更快。 有兩個 Windows PowerShell 功能,您需要啟用:Windows PowerShell 遠端處理和腳本的執行。 第一種方法要求您訪問每個您要管理的伺服器。 您可以使用遠端桌面協定 (RDP) 或運動鞋-網和運行兩個命令。

1.   打開 Windows PowerShell 主控台,具有管理許可權,並使用啟用 PSRemoting cmdlet 每個伺服器上啟用 Windows PowerShell 遠端處理:

PS> Enable-PSRemoting -Force

2.   你要使用某些 cmdlet 存儲在這些伺服器上的其他元件。 若要使用這些以後,您需要將無法運行的腳本 — — 其中,預設情況下,Windows PowerShell 不允許。 所以讓我們改變這一點:

PS> Set-ExecutionPolicy RemoteSigned –Force

此時,您可以部署和管理您的 IIS 伺服器。 如果您有數百台伺服器來管理,你就會想頒發群組原則來進行這些更改。 周圍所有這些伺服器的運行是荒謬浪費時間,所以這裡有啟用 Windows PowerShell 遠端處理與群組原則物件 (GPO) 的步驟:

  1. 啟用"允許自動配置的偵聽器,"並設置 IPv4 和 IPv6 的"*"。 你會發現在金鑰:\ 管理範本電腦 Configuration\Policies\Administrative \windows Components\Windows Management\WinRM 遠端伺服器。
  2. 啟用腳本執行下"打開的腳本執行"並設置策略設置為"僅允許簽名的腳本"或"允許本地腳本和遠端簽名的腳本"。你會發現在金鑰:\ 管理範本電腦 Configuration\Policies\Administrative \windows Components\Windows PowerShell。
  3. 設置為自動啟動,在此關鍵 Windows 遠端系統管理 (WinRM) 服務:電腦 Configuration\Policies\Windows 設置 \ 安全設置設置 \ 系統服務。

如果您在這些電腦上運行的 Windows 防火牆,您需要一個入站規則因為 WinRM 偵聽埠 5985。 你會發現在金鑰:具有高級安全的電腦 Configuration\Policies\Windows Settings\Windows 防火牆。

這些 Web 伺服器部署

接下來好戲就要上場了! 這是相當簡單,只需幾個 Windows PowerShell 一行,使發生的魔術。

1.   存儲將會給一個變數部署的一部分的所有伺服器名稱的清單。 如果您希望,然後使用 Windows PowerShell 讀取該清單,可以在記事本中創建清單:

PS> $servers= get-content c:\servers.txt

這是有點草率,尤其是當處理大型伺服器清單。 它是更好地使 Windows PowerShell 做所有的工作。 該活動目錄 cmdlet 可以讓你的電腦名稱的清單,你知道嗎? 若要使用活動目錄 cmdlet,您需要安裝活動目錄的遠端伺服器管理工具 (寄宿)。 如果您知道這個秘密給 Windows PowerShell 隱式遠端處理,您可以使用,無需安裝本地的 cmdlet。 與安裝的寄宿,第一項任務是導入 Active Directory cmdlet 的模組:

PS> Import-Module ActiveDirectory

導入後,您可以使用 Get ADComputer cmdlet 抓取您選擇的電腦名稱。 在此示例中,我們將會部署所有 IIS 的電腦開頭的名稱"網"。篩選的 Get ADComputer cmdlet 找到只有那些電腦名稱"Web,"開始和管選擇物件要抓住只的電腦的名稱:

PS> $servers= Get-ADComputer -filter 'name -like "web*"' | Select-Object -ExpandProperty name

2.   現在它是使用 Windows PowerShell 遠端處理的權力,使容易解除通常會長和鏜孔過程的時間。 讓我們部署 IIS。 首先,我們要建一個會話我們收集到所有這些伺服器:

PS> $session=New-PSSession -ComputerName $servers

3.   下一步是在遠端電腦上的伺服器管理器模組導入。 此模組具有的 cmdlet 的將安裝和刪除伺服器角色和功能。 我們使用調用命令 cmdlet 帶參數為我們先前創建的會話。 這個有趣的事是所有伺服器會立即都收到任何內部腳本塊 {} 發送的說明:

PS> Invoke-Command -Session $session {Import-module ServerManager}

在過程中不需要這一步。 這只是檢查是否在遠端電腦上已安裝 IIS。 Get WindowsFeature cmdlet 沒有這一份好的工作:

PS> invoke-command -Session $session {Get-WindowsFeature web-server} | format-table -AutoSize

我們談了一會兒我們陷入命令之前安裝 IIS。 IIS 已只允許靜態 Web 頁的預設安裝。 這是出於安全原因,很大,但我們大多數人將需要一些附加元件為我們自己應用程式的需要。

當使用 GUI 用於安裝時,所有列出的元件,您可以簡單地選中核取方塊。 與 Windows PowerShell,你要告訴具體什麼你會喜歡的元件的遠端電腦。 如果你正坐在 Windows Server 2008 R2 或 Windows 伺服器 8 的任何電腦,例如,可以使用 Get WindowsFeature iis (請注意您必須首先導入 ServerManager 模組) 中列出所有可用的元件:

PS> Get-WindowFeature *web*

一旦你知道的元件的名稱,您可以使用添加-WindowsFeature 來安裝它們。 從 Web 伺服器開始,然後添加每個元件,以逗號分隔:

PS> Add-WindowsFeature Web-Server, ASP

而無需鍵入他們的長字串,可以安裝 IIS 的所有元件。 請記住,安裝的一切並不是一個好主意,出於安全原因,但添加 WindowsFeature cmdlet 的參數,將説明:

PS> Add-WindowsFeature Web-Server -IncludeAllSubFeature

現在回到我們的遠端 IIS 部署。 我們希望 ASP 和 ASP 的預設安裝和附加元件。NET。 再一次,我們將使用調用命令 cmdlet。 一旦我們運行此命令,所有伺服器都將都安裝 IIS:

PS> Invoke-command -Session $session {Add-WindowsFeature web-server,web-asp,web-asp-net}

4.   出於測試目的,我們會將一組 Web 頁面部署到新的 Web 伺服器。 我們將使用 default.htm 和 testpage.asp 的檔。 將驅動器映射到伺服器並將檔複製到預設的 Web 網站將會需要很長時間。 相反,我們將做複製使用 Windows PowerShell 和伺服器清單。

在此示例中,Web 檔位於 c:\files。 將它們複製到是 UNC 路徑的目標複製項 cmdlet 的。 UNC 需要的伺服器名稱。 我們傳遞給 Foreach 物件 cmdlet 的伺服器清單 ($伺服器)。 Foreach 將迴圈訪問每個 $伺服器中的伺服器名稱。 若要修復的 UNC 路徑,以便我們不必在伺服器名稱中鍵入,使用 Windows PowerShell 特殊變數"$ _"。 此變數包含當前的伺服器名稱,從 $伺服器:

PS> $servers | foreach{copy-item -Path c:\files\*.* -Destination "\\$_\c$\inetpub\wwwroot"}

我們只被部署 IIS 和預設 Web 網站的伺服器的一大串在四分鐘的時間。 若要測試 Web 網站,啟動 Ie 流覽器使用的前面描述的技術。 此命令將啟動一個新的流覽器為每個伺服器,並顯示測試頁:

PS> $servers | foreach{Start-Process iexplore "http://$_/testpage.asp"}

若要關閉所有流覽器,回到 Windows PowerShell 和請嘗試以下方法:

PS> Stop-Process –Name iexplore

刪除 Web 伺服器

如果你在測試部署災難恢復,或只測試這種技術,您可能要刪除一切我們添加,然後再次開始從一個潔淨的環境。 下麵是如何刪除 Web 網站檔和 Web 伺服器,並執行的電腦重新開機:

PS> $servers | foreach{remove-item -Path "\\$_\c$\inetpub\wwwroot\*.*"} PS> Invoke-command -Session $session {Remove-WindowsFeature web-server,web-asp,web-asp-net} PS> Restart-Computer –Computername $servers -Force

腳本解決方案

有關 Windows PowerShell 最重要的是一旦你做的東西從主控台,您可以將它複製到一個文字檔,並使其腳本。 沒有大驚小怪,無需程式設計 — — 只是純自動化。 如果要將無法運行此部署在一瞬間用於災難恢復和進一步的測試,將複製到一個名為 IISDeploy.ps1 的文字檔這裡詳細的命令。 當您需要部署時,就可以運行此腳本。

這種類型的技術開闢了一套新的可能性。 可以自動將多個 Web 網站部署到 Web 場、 生成負載測試在農場或甚至為其他的角色和功能在 Windows 中的使用這些技術。

簽入已創建和配置應用程式池和更多的 Web 網站的 cmdlet 的 IIS 上的 WebAdministration 模組。 如果您需要實現自動化的東西,Windows PowerShell 將使您的工作更輕鬆、 快捷。

Jason Helmick  作為企業顧問、 培訓師和作者中有超過 20 年。 Windows PowerShell 技術在介面技術培訓的導演,他專注于與活動目錄和 IIS 的自動化。 你可以看到更多有關 IIS 在他即將出版的新書從曼甯出版物,"瞭解 Windows IIS 中一個月的午餐"。他在到達 JasonHelmick@gmail.com

相關內容