1
作爲部署腳本的一部分,我想保存當前網站上的所有綁定 - 但我想將它們保存爲可用於重新創建它們的格式後來。將Get-WebBinding輸出轉換爲New-WebBinding命令
到目前爲止,我有這樣的:
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
參數New-WebBinding
) - 什麼樣的SSL的結合是(爲
New-WebBinding
-SslFlags
參數)
我開始與dir IIS:\\SslBindings
作爲替代打交道了,我看它如何能得到我的Thumbprint
但不是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」)' –
優秀!如果我意識到我正在測試的一臺計算機實際上是Windows 2008而不是2012年,那麼我可能會想到這一點......輸入該答案作爲答案,我會接受它。 –