如果我在powershell中运行命令:
C:\Get-Website
输出
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 %SystemDrive%\inetpub\wwwroot http *:80:
net.tcp 808:*
net.pipe *
net.msmq localhost
msmq.formatname
localhost
但是如果我尝试只选择Bindings:
C:\Get-Website | where {$_.Name -eq "Default Web Site"} | select Bindings
它返回:
bindings : Microsoft.IIs.PowerShell.Framework.ConfigurationElement
如何将此对象的内容提取为有用的格式?
答案 0 :(得分:8)
bindings属性是一个集合,因此您必须使用ExpandProperty
参数:
Get-Website -Name "Default Web Site" | select -ExpandProperty Bindings
进一步向下钻取:
get-website -name "Default Web Site" | select -ExpandProperty Bindings | Select -ExpandProperty Collection
答案 1 :(得分:1)
最近,我正在使用类似的命令,但用于列出所有站点及其绑定。在IIS中,这就是我所做的:
get-childItem |
select * , @{Name="SiteBindings"; Expression = {($_.Bindings.Collection | %{$_.protocol + " " + $_.BindingInformation} | Out-String).replace("`r","" ) }}
注意replace(“`r”,“”)。如果您需要导出到CSV,则需要它。
答案 2 :(得分:0)
如果您不想从 Get-WebBinding
开始,也可以使用 Get-Website
cmdlet。
Import-Module WebAdministration
Get-WebBinding
这将显示所有网站的所有绑定信息,您可以从那里进一步过滤。
这是运行上述命令的示例输出。
protocol : http
bindingInformation : *:80:
sslFlags : 0
isDsMapperEnabled : False
certificateHash :
certificateStoreName :
ItemXPath : /system.applicationHost/sites/site[@name='Default Web Site' and @id='1']
RunspaceId : b7052f71-a213-437c-a97f-00fb9fa84a7f
Attributes : {Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute,
Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute,
Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute,
Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute…}
ChildElements : {}
ElementTagName : binding
Methods : {Microsoft.IIs.PowerShell.Framework.ConfigurationMethod,
Microsoft.IIs.PowerShell.Framework.ConfigurationMethod,
Microsoft.IIs.PowerShell.Framework.ConfigurationMethod,
Microsoft.IIs.PowerShell.Framework.ConfigurationMethod…}
Schema : Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema