将Get-WebBinding输出转换为New-WebBinding命令

时间:2015-06-01 19:58:45

标签: powershell iis-7.5

作为部署脚本的一部分,我想保存当前在网站上的所有绑定 - 但我想将它们保存为以后可以用来重新创建它们的格式。

到目前为止,我有这个:

    Import-module WebAdministration
    (Get-Item IIS:\Sites\$siteName).Bindings.Collection | select-object @{ Label="CMD"; Expression={"New-WebBinding -name '{0}' -Protocol {1} -IPAddress '{2}' -Port {3} -HostHeader '{4}'" -f "#siteName",$_.protocol,$_.bindingInformation.split(":")[0],$_.bindingInformation.split(":")[1],$_.bindingInformation.split(":")[2]}} | findstr "New-WebBinding" >c:\temp\bindings-$siteName.ps1

这会产生如下有用的输出:

New-WebBinding -name 'w2pclient' -Protocol http -IPAddress '172.16.7.17' -Port 80 -HostHeader ''   
New-WebBinding -name 'w2pclient' -Protocol http -IPAddress '172.16.7.16' -Port 80 -HostHeader ''   
New-WebBinding -name 'w2pclient' -Protocol https -IPAddress '172.16.7.18' -Port 443 -HostHeader '' 
New-WebBinding -name 'w2pclient' -Protocol https -IPAddress '172.16.7.36' -Port 443 -HostHeader '' 

不幸的是,您可以看到有关SSL绑定的两个缺失:

  • 证书的指纹(-Thumbprint的{​​{1}}参数)
  • 它是什么类型的SSL绑定(New-WebBinding)的-SslFlags参数

我开始使用New-WebBinding作为替代方案,我知道它是如何让我dir IIS:\\SslBindings而不是Thumbprint

有什么想法吗?

[编辑] Jan Chrbolka给了我答案。这是我的最终剧本:

SslFlags

1 个答案:

答案 0 :(得分:1)

您需要的参数值位于Bindings.Collection中。

您需要使用 GetAttributeValue 方法来检索它们。

像这样......

(Get-Item IIS:\Sites\TEST).Bindings.Collection[1].GetAttributeValue("certificateHash")
(Get-Item IIS:\Sites\TEST).Bindings.Collection[1].GetAttributeValue("sslFlags")