如果你管理Windows服务器,你可能已经使用过Internet Information Services (IIS)。网站是IIS的主要功能之一,使用PowerShell,你可以轻松地使用PowerShell IIS脚本来管理和自动化IIS!
在本文章中,你将会介绍一种使用PowerShell来管理IIS的新方法。使用本文章中的技术,你可以轻松地构建PowerShell IIS脚本来创建和管理IIS网站。
要使用PowerShell来管理IIS,需要使用WebAdministration或者IISAdministration这两个PowerShell模块之一。本文章介绍的是更现代化的IISAdministration模块。如果你想了解另一种方法,可以观看本文章的附带视频,演示了较旧的WebAdministration模块。
掌握为公司或者全球管理一个简单网站的能力,会让你与其他同行有所区别。本文章的以下部分将帮助你学习如何在IIS中创建和管理网站。你还将学习如何使用一些PowerShell命令来管理Web应用程序池。
IISAdministration模块与WebAdministration模块
对于管理IIS,你有两个选择。你可以使用WebAdministration或者IISAdministration。但是哪一个应该选择?
如果你使用的是IIS 10.0或更高版本,较新的IISAdministration模块在较旧的WebAdministration模块上有很多改进。
以下是幾個亮點:
- IISAdministration cmdlets 在管道方面提供更好的支援並具有更好的擴展性。
- 與舊版的 IIS WebAdministration cmdlets 相比,IISAdministration 包含更高效的程式碼。
- IISAdministration cmdlets 更簡單,並直接提供對伺服器管理員的存取。
本文將專注於這個更新的 IISAdministration 模組。
先決條件
本文將進行實作。如果你想跟著操作,請確保你已擁有以下先決條件。
- 最低要求為 Windows PowerShell 5.1 或 PowerShell 6+
- 從 PowerShell Gallery 安裝 IISAdministration PowerShell 模組
- 啟用 IIS 10.0 Windows 功能

建議你對 HTML 基礎知識有一定了解。在即將介紹的範例中,HTML 將扮演重要角色。但不用擔心,你將能夠複製並貼上程式碼!
本文中的所有範例均是在 Windows 10 上的 IIS 10.0 和 PowerShell 7 Preview 6 中建立的。IISAdministration cmdlets 在 Windows Server 2016 和 2019 中是相同的,並與 Windows PowerShell 5.1 兼容。
工具使用的部分就到此為止,現在是跟隨操作所需的資源。
安裝 IISAdministration 模組
一旦您滿足了先決條件,就可以進行一些設置工作了。幸運的是,您所需的 PowerShell 模組(IISAdministration)在 PowerShell 庫中是免費提供的。
請打開您的 Web 伺服器上的提升權限的 PowerShell 控制台,並使用以下命令安裝該模組。
如果您沒有網路連接,您可以在其他主機上下載該模組並將其複製到模組目錄中。請參閱有關
Save-Module
命令的文件。
查找可用的 Cmdlet
對於您可能不熟悉的任何 PowerShell 模組,您應該使用的第一個 Cmdlet 是 Get-Command
,它可以用於查找模組的 Cmdlet 清單。使用下面顯示的命令 Get-Command -Module 'IISAdministration'
,您可以看到使用這個模組可以做什麼。
即使您將學習一些在網站上執行的常見操作,這些命令也可以讓您了解其他所有可能的操作。

現在您有了可用的 Cmdlet 清單,是時候開始建立一個網站了。
建立您的第一個網站
要建立一个可以使用的网站,首先我们需要创建一个网站。为此,第一步是创建一个目录来保存网页内容。此外,您还需要在该目录中创建一个HTML文件,以供IIS显示。这个目录将作为以后示例中使用的Web目录。
创建Web文件夹和页面
首先,创建一个目录。为此,您可以使用New-Item
cmdlet。下面的代码将在C:\MyWebsite处创建一个目录。
您可以使用上述代码选择任何路径。为了简单起见,将使用通用路径。
创建目录后,是时候创建一个HTML文件,作为您的新网站的起始页面。
现在在C:\Mywebsite目录中创建一个名为index.html的文件,如下所示。
创建文件后,使用您喜欢的编辑器打开它,并将下面的代码复制粘贴到该文件中。这个HTML页面是一个简单的页面,用于确保在完成后正确配置了IIS。
创建IIS网站
现在是时候让刚刚创建的网页向世界展示了。为此,您需要创建一个虚拟目录。虚拟目录包含为提供页面所使用的所有资源和资产。
預設情況下,IIS在C:\inetpub\wwwroot下創建一個虛擬目錄。該目錄包含了IIS的所有默認網頁資源。您也可以使用默認的C:\inetpub\wwwroot目錄來存儲您的文件,但是為了使路徑盡可能短,本例中將不使用該目錄。因此,您將使用C:\MyWebsite目錄。
要創建一個新的虛擬目錄(站點),請使用New-IISSite
命令。該命令允許您創建IIS網站。
在本文中,創建一個名為Mywebsite的網站,指向C:\MyWebsite目錄,並在8088端口上進行監聽。在下面的代碼片段中,您可以看到如何使用New-IISSite
命令來實現這一點。
唯一可能令人困惑的部分是BindingInformation
參數。該參數僅允許綁定語法。在此代碼片段中,New-IISSite
將創建一個綁定到IP地址(*
表示127.0.0.1),監聽的TCP端口,後跟任何HTTP標頭的網站。
綁定語法可以解釋為協議,接著是源:端口:目的地。在此示例中,您已配置IIS以從任何()IP地址的8088端口接收HTTP請求,目的地是本地主機。
網站建立完成後,您可以運行Get-IISSite
來檢查其外觀,如下所示。

默認情況下,網站配置已啟動,您的 Web 主機開始提供 HTTP 請求的服務。打開您選擇的瀏覽器,導航到指向本地機器的 8088 端口。現在,您應該可以看到之前創建的網頁。

恭喜!您剛剛使用 PowerShell 在 IIS 上設置了第一個網站!
現在,您已經有一個正在運行的網站,是時候學習如何管理您的網站和托管它的 IIS 服務器了。
管理 IIS 網站
一旦網站運行起來,您無疑需要執行常見操作,例如停止和啟動網站。例如,如果需要對網站進行更新,有時需要重新啟動網站。
在 PowerShell 中管理網站時,您有兩個 cmdlet 可供使用 – Start-IISSite
和Stop-IISSite
。這兩個 cmdlet 的操作方式與Stop-Service
和Start-Service
cmdlet 類似。
停止網站類似於停止 Windows 服務。您可以阻止或允許通過 IIS 在唯一端口上提供的協議訪問網站。但是,您不會停止 IIS 主機。可以逐個停止和啟動網站。IIS 主機。
停止單個網站
要停止IIS網站,您將使用Stop-IISSite
cmdlet。默認情況下,您之前創建的網站應該處於Started
狀態。如果停止該網站並阻止訪問MyWebsite,請運行以下代碼提供名稱。此代碼將停止IIS提供MyWebsite網站的服務。停止網站後,您將無法再訪問它。
以下是檢查網站狀態為Started
、停止並再次檢查狀態的示例。在此示例中,您正在:
- 使用
Get-IISSite
獲取MyWebsite網站的狀態。 - 對MyWebsite網站執行
Stop-IISSite
cmdlet。此cmdlet關閉對網站的訪問。由於此操作正在進行操作更改,因此將提示您確認。 - 再次運行
Get-IISSite
以驗證MyWebsite網站已停止,通過觀察Stopped
狀態來確認。

停止所有網站
上面您停止了單個網站,但您也可以同樣輕鬆地停止所有網站。通過使用管道將Get-IISSite
的輸出導向Stop-IISSite
,PowerShell將列舉所有網站並停止它們。在下面的代碼示例中,使用了可選的Verbose
開關參數以顯示更多信息。

您也可以通過停止W3SVC或World Wide Web發布服務來停止IIS中的所有站點。停止Windows服務將關閉IIS並防止所有站點提供服務。但是,如果這樣做,站點仍然可能顯示為已啟動狀態。
啟動單個站點
假設您對MyWebsite站點進行了一些更改並且需要重新啟動它。現在是使用Start-IISSite命令的時候了。為此,只需像使用Stop-IISSite cmdlet一樣指定名稱即可。
執行後,您可以再次使用Get-IISSite檢查狀態。這樣做時,您應該會看到與下面截圖類似的輸出。

Get-IISSite
and starting the site with Start-IISSite
如果您刷新瀏覽器,則您的站點應該在http://localhost:8088上再次可用。
啟動所有站點
與停止所有站點發布方式相似,您也可以使用管道來啟動IIS主機上的所有網站。
再次,您正在獲取提供服務的所有IIS站點並使用管道來啟動每個站點。您的輸出應該與下面的截圖類似。

管理Web綁定
現在是時候對MyWebsite站點執行一些常見的管理任務了。最常見的任務之一是更改Web綁定。
當您創建了 MyWebsite 網站時,您使用了綁定語法 *:8088:
。這個語法表示在 IP 地址 127.0.0.1 上,使用端口 80,沒有 HTTP 頭信息。現在假設您決定將該網站改為在端口 9000 上進行監聽。為此,您需要修改網站的綁定設置。
檢查現有的綁定
在更改網站的綁定設置之前,您應該先檢查當前的配置。一種方法是檢查 Get-IISSite
返回的 Binding
屬性。請注意下面的代碼片段中如何執行此操作。在代碼片段中,Get-IISSite
查詢 MyWebSite 網站,並只返回 Bindings
屬性。
當您只檢查 Bindings
屬性時,PowerShell 將返回一個包含幾個不同信息的對象,如下所示。

如果您只想查看綁定信息,您可以明確引用 bindingInformation
屬性,如下所示。

刪除綁定
如果您想更改網站監聽的端口,首先必須刪除將其綁定到該端口的現有綁定。要刪除綁定,首先必須停止該網站。
一旦網站停止,您現在可以刪除將 MyWebsite 網站綁定到端口 8088 的現有綁定。為此,您可以使用 Remove-IISSiteBinding
cmdlet。
要移除之前定義的 MyWebsite 的綁定,下面是使用 Remove-IISSiteBinding
的示例。在下面,您提供了站點的名稱,並指定了先前發現的綁定語法。
執行代碼時,您將被提示確認您的決定,因為您正在執行一些具有破壞性的操作,如下所示。

您可以擁有無限多個綁定。您可以輕鬆地保留原始綁定並將 TCP 端口 9000 添加為新的綁定。
現在,您可以再次運行 Get-IISSite -Name 'MyWebsite'
。您將看到綁定信息已被移除,如下所示,Bindings
下方是空值。

即使站點已發布,IIS 也無法知道如何將流量路由到您的站點。
為您的站點分配至少一個綁定是很重要的。為了向您展示其重要性,請再次嘗試訪問 http://localhost:8088/index.html。如果您使用的是 Mozilla Firefox 瀏覽器,您可能會看到以下消息。

創建新的綁定
在上一節中,您移除了 MyWebsite 唯一的站點綁定。雖然這破壞了站點,但這只是一個暫時的問題。現在,是時候通過創建一個新的綁定來解決這個問題了。
要創建一個新的綁定,請使用 New-IISSiteBinding
cmdlet。由於您現在需要將端口 9000 綁定到 MyWebsite 站點,請按照下面顯示的正確綁定語法指定。
一旦您创建了新的绑定,使用Start-IISSite
再次启动站点。请记住,为了创建这个新的绑定,IIS需要关闭站点。
站点再次启动后,您现在应该能够通过9000端口访问它。要验证这一点,打开您选择的web浏览器,导航到http://localhost:9000。现在您应该能够在9000端口下看到网页再次工作。

删除网站
如果您只是按照教程操作,并且不打算保留MyWebsite网站,那么现在是清理的时候了。要删除一个站点,请使用Remove-IISSite
cmdlet。
删除IIS站点是一项危险的任务,特别是如果您要删除托管其他生产网站的IIS站点。为了验证您是否删除了正确的站点,建议使用常见的WhatIf
PowerShell参数。此参数允许您查看如果该命令实际运行会发生什么。
您可以看到使用WhatIf
参数删除MyWebsite站点的示例如下。

-WhatIf
!如果一切正常,请松开安全杆并重新运行代码,这次不带-WhatIf
参数。
使用
Remove-IISSite
cmdlet时,网站不会被删除。它会从IIS配置中移除。网站的文件保持不变。
摘要
在本文中,您已經學會使用IISAdministration模塊創建網站。您已經了解到如何執行維護網站所需的管理操作。您現在已經掌握了足夠的基礎知識,可以使用PowerShell與任何現代的IIS主機一起工作!