当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

作者:精品下载站 日期:2024-12-14 20:52:52 浏览:13 分类:玩电脑

如何使用 PowerShell 和 IIS 自动化网站


如果您管理 Windows 服务器,您可能使用过 Internet 信息服务 (IIS)。网站是 IIS 的主要功能之一,使用 PowerShell,您可以使用 PowerShell IIS 脚本轻松管理和自动化 IIS!

在本文中,您将了解一种使用 PowerShell 管理 IIS 的新方法。使用本文中的技术,您可以轻松构建 PowerShell IIS 脚本来创建和管理 IIS 网站。

要使用 PowerShell 管理 IIS,需要两个 PowerShell 模块之一 - WebAdminstration 或 IISAdminstration。本文介绍了更现代的 IIS 管理模块。如果您想了解替代方法,本文的配套视频演示了旧的 WebAdministration 模块。

了解如何为您的公司或整个世界管理一个简单的网站将使您从其他同行中脱颖而出。本文的以下部分将帮助您了解如何在 IIS 中创建和管理网站。您还将了解如何使用一些 PowerShell cmdlet 管理 Web 应用程序池。

IIS 管理与 Web 管理模块

您有两种管理 IIS 的选项。您可以使用 Web 管理或 IIS 管理。但您应该使用哪一个呢?

如果您使用的是 IIS IIS 10.0 或更高版本,则较新的 IISAdministration 模块比旧的 WebAdministration 模块提供了许多改进。

以下是一些亮点:

  • IISAdministration cmdlet 为管道提供更好的支持并更好地扩展。
  • 与较旧的 IIS WebAdministration cmdlet 相比,IISAdministration 包含更高效的代码。
  • IISAdministration cmdlet 更简单,并且提供对服务器管理器的直接访问。

本文将重点介绍这个较新的 IIS 管理模块。

先决条件

本文将进行实践。如果您打算继续操作,请确保满足以下先决条件。

  • 最低 Windows PowerShell 5.1 或 PowerShell 6+
  • PowerShell 库中的 IIS 管理 PowerShell 模块
  • 已启用 IIS 10.0 Windows 功能

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

建议您熟悉 HTML 基础知识。在接下来的示例中,HTML 使用将发挥重要作用。但不用担心,您将能够复制并粘贴代码!

本博文中的所有示例都是使用 Windows 10 和 PowerShell 7 Preview 6 上的 IIS 10.0 创建的。Windows Server 2016 和 2019 的 IISAdministration cmdlet 相同,并且可与 Windows PowerShell 5.1 配合使用。

这就是所使用的工具,现在是后续所需的资源。

安装 IIS 管理模块

满足先决条件后,就可以进行一些设置工作了。幸运的是,不需要做太多设置,因为您需要的 PowerShell 模块(IISAdministration)可以在 PowerShell Gallery 中免费获得。

继续在 Web 服务器上打开提升的 PowerShell 控制台,然后使用以下命令安装模块。

PS> Install-Module -Name 'IISAdministration'

如果您无法访问互联网,您可以将该模块下载到另一台主机并将该模块复制到您的模块目录中。查看 Save-Module 命令的文档。

发现可用的 Cmdlet

与您可能不熟悉的任何 PowerShell 模块一样,用于发现模块 cmdlet 清单的第一个 cmdlet 之一是 Get-Command。使用如下所示的命令 Get-Command -Module 'IISAdministration' 将允许您查看此模块的功能。

尽管您将学习在网站上执行的一些常见操作,但这些命令将使您了解您可以执行的其他操作。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

现在您已获得可用 cmdlet 的列表。是时候开始建立一个网站了。

创建您的第一个网站

要拥有一个可以使用的网站,我们首先要创建一个网站。为此,第一步是创建一个目录来保存 Web 内容。此外,您还需要该目录中有一个 HTML 文件以便 IIS 显示。该目录将作为稍后示例中使用的 Web 目录。

创建 Web 文件夹和页面

首先,创建一个目录。为此,您可以使用 New-Item cmdlet。下面的代码将在C:\MyWebsite处创建一个目录。

PS> New-Item -ItemType Directory -Name 'MyWebsite' -Path 'C:\'

您可以使用上面的代码选择您想要的任何路径。为了简单起见,将使用通用路径。

创建目录后,就可以创建一个 HTML 文件,该文件将作为新网站的登陆页面。

现在,在 C:\Mywebsite 目录中创建一个名为 index.html 的文件,如下所示。

PS> New-Item -ItemType File -Name 'index.html' -Path 'C:\MyWebsite\'

创建文件后,在您喜欢的编辑器中将其打开,然后将以下代码复制并粘贴到该文档中。此 HTML 是一个简单的页面,将用于确保完成后正确配置 IIS。

<!DOCTYPE html>
<html>
    <head>
         <title>IIS Administration With PowerShell Demo</title>
    </head>
    <body>
        <h1>IIS Administration with PowerShell Demo</h1>
        <p>Thank you for reading this post on how to administer IIS with PowerShell!</p>

        <p>This page was created using the newer IISAdministration PowerShell module.</p>
        <h2>First Steps</h2>
        <p>Keep calm and learn PowerShell.</p>
    </body>
</html>

创建 IIS 网站

现在是时候让刚刚创建的网页可供全世界查看了。为此,您需要创建一个虚拟目录。虚拟目录包含用于所提供页面的所有资产和资源。

默认情况下,IIS 在 C:\inetpub\wwwroot 下创建一个虚拟目录。该目录包含 IIS 的所有默认网页资产和资源。您也可以使用默认的 C:\inetpub\wwwroot 目录来存储文件,但对于这些示例,它不会用于保持路径尽可能短。这就是您使用 C:\MyWebsite 的原因。

要创建新的虚拟目录(站点),请使用 New-IISSite cmdlet。此 cmdlet 允许您创建 IIS 网站。

在本文中,创建一个名为 Mywebsite 的网站,该网站指向正在侦听端口 8088 的 C:\MyWebsite 目录。在下面的代码片段中,您可以了解如何执行此操作使用 New-IISSite cmdlet。

唯一可能令人困惑的是 BindingInformation 参数。该参数仅允许绑定语法。在此代码段中,New-IISSite 将创建一个绑定到 IP 地址的网站(* 与 127.0.0.1 相同),随后是要侦听的 TCP 端口通过任何 HTTP 标头。

绑定语法可以解释为协议,后跟 source:Port:destination 。在此示例中,您已将 IIS 配置为在端口 8088 上侦听来自任何 () IP 地址的 HTTP 请求,并且目标是本地主机。*

PS> New-IISSite -Name 'MyWebsite' -PhysicalPath 'C:\MyWebsite\' -BindingInformation "*:8088:"

创建站点后,您可以运行 Get-IISSite 来检查它的外观,如下所示。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

默认情况下,网站配置已启动,您的网络主机开始为这些 HTTP 请求提供服务。打开您选择的浏览器并导航到指向端口 8088 的本地计算机。您现在应该看到显示之前创建的网页。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

恭喜!您刚刚使用 PowerShell 在 IIS 上设置了您的第一个网站!

现在您已经建立并运行了一个网站,是时候学习如何管理您的网站和托管该网站的 IIS 服务器了。

管理 IIS 网站

一旦网站开始运行,您无疑需要执行常见操作,例如停止和启动网站。例如,如果站点需要更新,您有时必须重新启动站点。

要在 PowerShell 中管理站点,您需要使用两个 cmdlet - Start-IISSiteStop-IISSite。这两个 cmdlet 的工作方式与 Stop-ServiceStart-Service cmdlet 的操作方式类似。

停止网站类似于停止 Windows 服务。您正在阻止或允许访问可通过 IIS 在唯一端口上提供服务的协议访问的站点。但是,您并未停止IIS 主机。站点可以单独停止和启动。

停止单个站点

要停止 IIS 网站,您将使用 Stop-IISSite cmdlet。默认情况下,您之前创建的站点应处于已启动 状态。如果您停止该站点并因此阻止访问MyWebsite,请运行Stop-IISSite并提供如下所示的名称。此代码阻止 IIS 为 MyWebsite 站点提供服务。停止该网站后,您将无法再访问它。

PS> Stop-IISSite -Name "MyWebsite"

下面显示了检查网站状态为 Started、停止并再次检查状态的示例。在此示例中,您是:

  1. 使用 Get-IISSite 获取 MyWebsite 站点的状态。
  2. 针对 MyWebsite 站点执行 Stop-IISSite cmdlet。此 cmdlet 会关闭对网站的访问。由于此操作正在进行操作更改,因此系统将提示您进行确认。
  3. 再次运行 Get-IISSite,通过观察 Stopped 状态来验证 MyWebsite 站点是否已停止。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

停止所有网站

上面您停止了单个站点,但您也可以同样轻松地停止所有站点。通过使用管道并将 Get-IISSite 的输出通过管道传输到 Stop-IISSite,PowerShell 将枚举所有站点并停止它们。在下面的代码示例中,可选的 Verbose 开关参数用于显示更多信息。

Get-IISSite | Stop-IISSite -Verbose

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

您还可以通过停止 W3SVC 或万维网发布服务来停止 IIS 中的所有站点。停止 Windows 服务会关闭 IIS 并阻止为所有站点提供服务。但是,如果您这样做,网站可能仍显示为处于“已启动”状态。

启动单个站点

假设您对 MyWebsite 网站进行了一些更改,并且需要重新启动它。是时候使用 Start-IISSite 命令了。为此,只需指定名称,就像使用 Stop-IISSite cmdlet 一样。

PS> Start-IISSite -Name 'MyWebsite'

执行后,您可以使用 Get-IISSite 再次检查状态。当您这样做时,您应该会看到与下面的屏幕截图类似的输出。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

现在,如果您刷新浏览器,您的网站应该可以再次访问 http://localhost:8088

启动所有站点

与停止发布所有网站的方式类似,您也可以使用管道启动 IIS 主机上的所有网站。

PS> Get-IISSite | Start-IISSite

您将再次获得所有正在提供服务的 IIS 站点,并使用管道启动每个站点。您的输出应该类似于下面的屏幕截图。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

管理 Web 绑定

现在是时候开始在 MyWebsite 站点上执行一些常见的管理任务了。最常见的任务之一是更改 Web 绑定。

当您创建 MyWebsite 站点时,您使用了 *:8088: 的绑定语法。此语法表示在端口 80 上侦听 IP 地址 127.0.0.1,不带 HTTP 标头。假设现在您决定让站点侦听端口 9000。为此,您需要修改站点绑定。

检查现有绑定

在更改站点的绑定之前,您应该首先检查当前配置。一种方法是检查 Get-IISSite 返回的 Binding 属性。请注意下一个代码片段中如何执行此操作。在代码片段中,Get-IISSite 正在查询 MyWebSite 站点,并且仅返回 Bindings 属性。

PS> (Get-IISSite -Name 'MyWebsite').Bindings

当您仅检查 Bindings 属性时,PowerShell 将返回一个包含一些不同信息的对象,如下所示。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

如果您只想查看绑定信息,可以专门引用 bindingInformation 属性,如下所示。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

删除绑定

如果您想更改站点侦听的端口,则必须首先删除将其绑定到该端口的现有绑定。要删除绑定,您首先必须停止该站点。

PS> Stop-IISSite -Name 'MyWebsite'

站点停止后,您现在可以删除将 MyWebsite 站点绑定到端口 8088 的现有绑定。为此,您可以使用 Remove-IISSiteBinding cmdlet。

要删除前面定义的 MyWebsite 的绑定,您可以在下面看到使用 Remove-IISSiteBinding 来执行此操作的示例。下面,您将提供站点的名称并指定之前发现的绑定语法。

PS> Remove-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:8088:"

当您执行代码时,系统将提示您确认您的决定,因为您正在做一些破坏性的事情,如下所示。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

您可以拥有的绑定数量没有限制。您可以轻松地保留原始绑定并添加 TCP 端口 9000 作为新绑定。

现在您可以再次运行 Get-IISSite -Name 'MyWebsite'。现在,您将看到绑定信息已被删除,如 Bindings 下的空白值所示。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

即使站点已发布,IIS 也无法知道如何将流量路由到您的站点。

至少为您的站点分配一个绑定非常重要。为了向您展示重要性,请尝试再次导航到 http://localhost:8088/index.html。如果您使用的是 Mozilla Firefox Web 浏览器,您可能会看到下面的此消息。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

创建新的绑定

在上一部分中,您删除了 MyWebsite 唯一的网站绑定。虽然这破坏了网站,但这只是暂时的问题。现在是通过创建新绑定来纠正此问题的时候了。

要创建新绑定,请使用 New-IISSiteBinding cmdlet。由于您现在需要将端口 9000 绑定到 MyWebsite 站点,请指定正确的绑定语法,如下所示。

PS> New-IISSiteBinding -Name 'MyWebsite' -BindingInformation "*:9000:"

创建新绑定后,使用 Start-IISSite 再次启动站点。回想一下,为了创建这个新绑定,IIS 需要关闭该站点。

当站点再次启动时,您现在应该能够在端口 9000 上访问它。要验证这一点,请打开您选择的 Web 浏览器并导航到 http://localhost:9000。您现在应该看到网页在端口 9000 下再次运行。

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

删除网站

您刚刚完成了教程,并不打算永久保留 MyWebsite 网站,是时候清理它了。要删除网站,请使用 Remove-IISSite cmdlet。

删除 IIS 站点可能是一项危险的任务,尤其是当您要删除 IIS 上托管其他生产网站的站点时。要验证您删除的网站是否正确,建议使用常见的 WhatIf PowerShell 参数。此参数允许您检查如果命令实际运行的话发生什么。

您可以在下面看到使用 WhatIf 参数删除 MyWebsite 网站的示例。

Remove-IISSite -Name 'MyWebSite' -WhatIf

[玩转系统] 如何使用 PowerShell 和 IIS 自动化网站

如果一切看起来都不错,请松开安全栏并重新运行代码,这次不带 -WhatIf 参数。

使用 Remove-IISSite cmdlet 时,不会删除该网站。它已从 IIS 配置中删除。网站文件保持不变。

概括

在本文中,您学习了如何使用 IIS 管理模块创建网站。您已经了解了如何执行维护网站所需的管理操作。您现在已经了解了足够的基础知识,可以使用 PowerShell 来处理任何现代 IIS 主机!

进一步阅读

  • IISAdministration PowerShell Cmdlet 参考
  • 及时了解最新的 IIS 技术 (iis.net)
  • Microsoft IIS 管理 API

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯