Powershell 将“获取网络绑定输出”转换为新的网络绑定命令
作为部署脚本的一部分,我希望保存网站上当前的所有绑定,但我希望保存的格式可以用于以后重新创建它们 到目前为止,我有:Powershell 将“获取网络绑定输出”转换为新的网络绑定命令,powershell,iis-7.5,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 '{
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
- 它是什么类型的SSL绑定(
新Web绑定的参数)-SslFlags
目录IIS:\\SslBindings
作为替代,我看到它如何让我得到指纹
,而不是SslFlags
有什么想法吗
[编辑]Jan Chrbolka给了我答案。这是我最后的剧本:
function Record-Bindings([string]$siteName)
{
Import-module WebAdministration
(Get-Item IIS:\Sites\$siteName).Bindings.Collection |
Select-Object bindinginformation, Protocol, @{ name="IP"; expression={$_.bindinginformation.split(":")[0]}},
@{name="Port"; expression={$_.bindinginformation.split(":")[1]}},
@{name="HostName"; expression={$_.bindinginformation.split(":")[2]}},
@{name="certificateHash"; expression={$_.GetAttributeValue("certificateHash")}},
@{name="sslFlags"; expression={$_.GetAttributeValue("sslFlags")}} |
Where-Object {$_.Port -lt 8000} |
ForEach-Object { "New-WebBinding -name '{0}' -Protocol {1} -IPAddress '{2}' -Port {3} -HostHeader '{4}' -Thumbprint '{5}' -SslFlags {6}" `
-f "$siteName",$_.protocol,$_.IP, $_.Port, $_.HostName, $_.certificateHash, $_.sslFlags } > c:\temp\bindings-$siteName.ps1
}
所需参数的值位于Bindings.Collection中 您需要使用GetAttributeValue方法来检索它们 像这样的
(Get-Item IIS:\Sites\TEST).Bindings.Collection[1].GetAttributeValue("certificateHash")
(Get-Item IIS:\Sites\TEST).Bindings.Collection[1].GetAttributeValue("sslFlags")
所需的值位于Bindings.Collection中。您需要使用GetAttributeValue方法来检索它们。像这样的<代码>(获取项目IIS:\Sites\TEST)。绑定。集合[1]。GetAttributeValue(“certificateHash”)和
(获取项目IIS:\Sites\TEST)。绑定。集合[1]。GetAttributeValue(“sslFlags”)
非常好!如果我意识到我正在测试的一台机器实际上是Windows 2008而不是2012,我可能会想到。。。。请输入答案,我会接受的。