第一个抱歉我的英语,但我需要你的PowerShell脚本帮助。 我必须使用powershell脚本配置IIS服务器,我遇到“添加应用程序”的问题。我需要检查网站中是否存在Web应用程序。我想要 选择站点“testsite2”中的所有Web应用程序
$webapplication=Get-WebApplication | Where-Object {$_. applicationpool -eq "testsite2"} | select -expand Name;
但我有问题,命令以错误结束
选择:无法找到属性“名称”。行:1字符: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
我不明白。当我想从“名称”列中选择值时,我该怎么做?
我得到相同的结果
Get-ChildItem –Path IIS:\AppPools\ | Where-Object {$_. Name -eq "testsite2"} | select -ExpandProperty applications
结果:
选择:无法找到属性“应用程序”。 在行:1字符:80 Get-ChildItem -Path IIS:\ AppPools \ | Where-Object {$ _。名称-eq“testsite2”} | s ... CategoryInfo:InvalidArgument:(Microsoft.IIs.P ... gurationElement:PSObject)[Select-Object],PSArgumentException FullyQualifiedErrorId:ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand
答案 0 :(得分:5)
WebAdministration
模块可能有点欺骗,因为它使用自定义格式数据来显示Name
和Format-Table
之类的内容(即使基础对象没有Name
属性)。
要获得等效的Name
值,请使用Path
属性并修剪/
:
$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'