使用 powershell 列出 IIS 中的 Web 应用程序
List webapplications in IIS with powershell
首先抱歉我的英语不好,但我需要您帮助我编写 powershell 脚本。
我必须使用 powershell 脚本配置 IIS 服务器,但 "add application" 有问题。我需要检查站点中是否存在 webapplication。我想
选择站点 "testsite2"
中的所有 Web 应用程序
$webapplication=Get-WebApplication | Where-Object {$_. applicationpool -eq "testsite2"} | select -expand Name;
但我遇到问题,命令以错误结尾
select : Property "Name" cannot be found.At line:1 char:75 Get-WebApplication | Where-Object {$_. applicationpool -eq "testsite2"} | select ... CategoryInfo : InvalidArgument: (Microsoft.IIs.P...gurationElement:PSObject) [Select-Object], PSArgumentException FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
我不明白。当我想从 "Name" 列中选择值时我做了什么?
我得到相同的结果
Get-ChildItem –Path IIS:\AppPools\ | Where-Object {$_. Name -eq "testsite2"} | select -ExpandProperty applications
结果:
select : Property "applications" cannot be found.
At line:1 char:80
Get-ChildItem –Path IIS:\AppPools\ | Where-Object {$_. Name -eq "testsite2"} | s ...
CategoryInfo : InvalidArgument: (Microsoft.IIs.P...gurationElement:PSObject) [Select-Object], PSArgumentException
FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
WebAdministration
模块可能有点欺骗性,因为它使用自定义格式数据来显示 Name
和 Format-Table
之类的东西(即使底层对象没有 Name
属性).
要获得等效的 Name
值,请取 Path
属性 和 trim /
:
$WebAppNames = Get-WebApplication |Select @{Name='Name';Expression={$_.Path.Trim('/')}} |Select -Expand Name
以上正是 PowerShell 中的格式化子系统计算 Name
值的方式。
您可以使用 Get-Member
cmdlet 探索对象的实际属性:
Get-WebApplication |Get-Member
这还将向您显示类型名称,您可以使用它来探索可能适用的任何其他类型或格式数据:
Get-TypeData -TypeName 'Microsoft.IIS.PowerShell.Framework.ConfigurationElement#site#application'
Get-FormatData -TypeName 'Microsoft.IIS.PowerShell.Framework.ConfigurationElement#site#application'
首先抱歉我的英语不好,但我需要您帮助我编写 powershell 脚本。 我必须使用 powershell 脚本配置 IIS 服务器,但 "add application" 有问题。我需要检查站点中是否存在 webapplication。我想 选择站点 "testsite2"
中的所有 Web 应用程序$webapplication=Get-WebApplication | Where-Object {$_. applicationpool -eq "testsite2"} | select -expand Name;
但我遇到问题,命令以错误结尾
select : Property "Name" cannot be found.At line:1 char:75 Get-WebApplication | Where-Object {$_. applicationpool -eq "testsite2"} | select ... CategoryInfo : InvalidArgument: (Microsoft.IIs.P...gurationElement:PSObject) [Select-Object], PSArgumentException FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
我不明白。当我想从 "Name" 列中选择值时我做了什么?
我得到相同的结果
Get-ChildItem –Path IIS:\AppPools\ | Where-Object {$_. Name -eq "testsite2"} | select -ExpandProperty applications
结果:
select : Property "applications" cannot be found. At line:1 char:80 Get-ChildItem –Path IIS:\AppPools\ | Where-Object {$_. Name -eq "testsite2"} | s ... CategoryInfo : InvalidArgument: (Microsoft.IIs.P...gurationElement:PSObject) [Select-Object], PSArgumentException FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
WebAdministration
模块可能有点欺骗性,因为它使用自定义格式数据来显示 Name
和 Format-Table
之类的东西(即使底层对象没有 Name
属性).
要获得等效的 Name
值,请取 Path
属性 和 trim /
:
$WebAppNames = Get-WebApplication |Select @{Name='Name';Expression={$_.Path.Trim('/')}} |Select -Expand Name
以上正是 PowerShell 中的格式化子系统计算 Name
值的方式。
您可以使用 Get-Member
cmdlet 探索对象的实际属性:
Get-WebApplication |Get-Member
这还将向您显示类型名称,您可以使用它来探索可能适用的任何其他类型或格式数据:
Get-TypeData -TypeName 'Microsoft.IIS.PowerShell.Framework.ConfigurationElement#site#application'
Get-FormatData -TypeName 'Microsoft.IIS.PowerShell.Framework.ConfigurationElement#site#application'