使用PowerShell获取IIS站点绑定遇问题,求解决方法
解决IIS站点绑定信息的展开与导出问题
当你执行Get-ChildItem -Path IIS:\Sites | Select-Object Name, State, Bindings时,Bindings返回的是数组对象,直接输出或导出会看不到实际的绑定地址、端口等信息,这里提供两种实用的处理方式:
方法1:将绑定信息合并为字符串(适合单条记录展示站点所有绑定)
用Select-Object的计算属性遍历Bindings数组,把每个绑定的关键信息拼接成可读字符串:
Get-ChildItem -Path IIS:\Sites | Select-Object Name, State, @{Name='Bindings'; Expression={ # 遍历每个绑定,拼接协议+绑定信息,用分号分隔多个绑定 $_.Bindings | ForEach-Object { "$($_.Protocol) : $($_.BindingInformation)" } -join ';' }} | # 导出到CSV文件,可根据需求改成其他格式(如Export-Clixml) Export-Csv -Path 'IIS_Sites_Summary.csv' -NoTypeInformation -Encoding UTF8
方法2:拆分每个绑定为单独记录(适合明细化查看)
如果需要每个绑定单独一条记录,就用PSCustomObject构造自定义对象,把站点信息和绑定信息一一对应:
Get-ChildItem -Path IIS:\Sites | ForEach-Object { $siteName = $_.Name $siteState = $_.State # 遍历当前站点的所有绑定,生成独立记录 $_.Bindings | ForEach-Object { [PSCustomObject]@{ SiteName = $siteName SiteState = $siteState Protocol = $_.Protocol BindingInfo = $_.BindingInformation } } } | Export-Csv -Path 'IIS_Site_Bindings_Detail.csv' -NoTypeInformation -Encoding UTF8
是否需要PSCustomObject?
- 如果只是要把站点的所有绑定合并成可读字符串展示/导出,用方法1的计算属性就足够,无需PSCustomObject;
- 如果需要结构化拆分每个绑定到单独行,或者要自定义更多字段(比如添加绑定的其他属性),PSCustomObject会更灵活,能完全控制输出的结构。
内容的提问来源于stack exchange,提问作者uncrayon
相关产品推荐
相关产品推荐

