使用powershell

时间:2016-11-21 18:28:04

标签: powershell iis-8

第一个抱歉我的英语,但我需要你的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

1 个答案:

答案 0 :(得分:5)

WebAdministration模块可能有点欺骗,因为它使用自定义格式数据来显示NameFormat-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'