PowerShell 管理单元:在 IIS 管理单元命名空间中导航

作者:Thomas Deml

每个人都熟悉文件系统的组织方式。 文件系统是分层命名空间,由包含文件和其他目录的目录组成。 PowerShell 管理单元利用对文件系统的这种熟悉性,并允许将其他数据存储公开为分层命名空间。 与文件系统驱动器的根目录通常是 C:\ 一样,IIS 配置系统的根目录为“IIS:”。

在根“IIS:”驱动器下,你会发现“Sites”和 Application Pools(简称为“AppPools”)。

IIS 管理单元命名空间的组织情况

下面是 IIS PowerShell 管理单元命名空间的结构。 无法删除或移动以下容器。

  • IIS:\

    • 站点

      • 网站集

        • 应用程序和虚拟目录
    • AppPools

      • WorkerProcesses
    • SslBindings

请注意:如果启动工作进程,你将在工作进程集合中找到 PowerShell 进程对象。 此进程集合使用 Request 和 AppDomain 对象进行扩充。 这样,你可以查询 IIS 工作进程,以获取当前正在执行的请求和正在运行的应用程序域。

现在来试一试。

任务 1 - 熟悉 IIS 提供程序命名空间

1.1. 启动 IIS PowerShell 管理控制台

单击“开始”菜单,然后选择“所有程序”-“IIS 7.0 扩展”-“IIS PowerShell 管理控制台”。 新的 PowerShell 命令窗口的提示设置为“IIS:” - 它是IIS 提供程序命名空间的根目录。

1.2. 导航命名空间

键入“dir”,请注意 Sites 和 AppPools 是根目录下仅有的两个目录。

PS IIS:\> dir
Name
----
Sites
AppPools

在下一步,我们要更改为 Sites 目录。 为此,可以使用以下命令:

PS IIS:\> cd Sites
PS IIS:\Sites> dir
Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
Default Web Site 1    Started    f:\inetpub\wwwroot             http *:80:

如果你喜欢冒险,你会注意到键入 cd Si<tab> 将为你提供命令行补全。

现在请尝试此操作:

1.2 更多的一些导航

现在请尝试以下操作:

PS IIS:\Sites> Get-Item 'Default Web Site' | Select-Object *

PSPath                     : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites\Default Web Site
PSParentPath               : IIsProviderSnapIn\WebAdministration::\\THDLAP\Sites
PSChildName                : Default Web Site
PSDrive                    : IIS
PSProvider                 : IIsProviderSnapIn\WebAdministration
PSIsContainer              : True
State                      : Started
name                       : Default Web Site
id                         : 1
serverAutoStart            : True
bindings                   : {binding, binding}
limits                     : Microsoft.Web.Administration.ConfigurationElement
logFile                    : Microsoft.Web.Administration.ConfigurationElement
traceFailedRequestsLogging : Microsoft.Web.Administration.ConfigurationElement
applicationDefaults        : Microsoft.Web.Administration.ConfigurationElement
virtualDirectoryDefaults   : Microsoft.Web.Administration.ConfigurationElement
applicationPool            : DefaultAppPool
enabledProtocols           : http
userName                   :
password                   :
physicalPath               : f:\inetpub\wwwroot
Attributes                 : {name, id, serverAutoStart, state}
ChildElements              : {bindings, limits, logFile, traceFailedRequestsLogging...}
ElementTagName             : site
IsLocallyStored            : True
Methods                    : {Start, Stop}
RawAttributes              : {name, id, serverAutoStart, state}
Schema                     : Microsoft.Web.Administration.ConfigurationElementSchema

我们第一次尝试使用 PowerShell cmdlet,而不是使用旧的 DOS 命令,例如 CD 或 DIR。 如果想要有效地使用 IIS PowerShell 管理单元,最好熟悉这些命令。

例如,通过 Get-Item 命令可以获取指定位置的项的详细信息。 在本例中,我们获取“默认网站”的详细信息(如果想要少键入一些内容,请尝试使用“get-item D<tab>”,这样命令行将由 PowerShell 自动补全)。 我们将 Get-Item 的输出通过管道传递给 Select-Object cmdlet,它会显示“默认网站”的所有配置设置。

总结

本演练简要介绍了 IIS 管理单元命名空间的组织方式。 你还学习了用于在 IIS 命名空间中找到所需信息的一些基本命令。