【发布时间】:2016-01-21 22:30:36
【问题描述】:
我正在尝试在 2 个站点之间交换绑定,即 Powershell 中的 IIS。下面的脚本正在运行,但它似乎有点太复杂了:
$site1Name = ''
$site2Name = ''
$site1 = Get-Website | Where-Object {$_.Name -eq $site1Name}
$site2 = Get-Website | Where-Object {$_.Name -eq $site2Name}
$site1Bindings = $site1 | Get-WebBinding
$site2Bindings = $site2 | Get-WebBinding
$site1 | Get-WebBinding | Remove-WebBinding
$site2 | Get-WebBinding | Remove-WebBinding
function Copy-Bindings
{
param($siteA_Bindings, [string]$siteB_Name)
foreach ($binding in $siteA_Bindings)
{
$bindingInformation = $binding['bindingInformation'].Split(':')
$ip = $bindingInformation[0]
$port = $bindingInformation[1]
if ($bindingInformation.Length -gt 2)
{
$hostRecord = $bindingInformation[2]
}
else
{
$hostRecord = ''
}
$protocol = $binding['protocol']
New-WebBinding -Name $siteB_Name -Port $port -Protocol $protocol -IPAddress $ip -HostHeader $hostRecord
}
}
Copy-Bindings $site1Bindings $site2Name
Copy-Bindings $site2Bindings $site1Name
我想要的是更像这样的东西(在伪代码中):
$site1Name = ''
$site2Name = ''
$site1 = Get-Website | Where-Object {$_.Name -eq $site1Name}
$site2 = Get-Website | Where-Object {$_.Name -eq $site2Name}
$site1Bindings = $site1 | Get-WebBinding
$site2Bindings = $site2 | Get-WebBinding
$site1 | Get-WebBinding | Remove-WebBinding
$site2 | Get-WebBinding | Remove-WebBinding
$site1Bindings | New-WebBinding -Name $site2Name
$site2Bindings | New-WebBinding -Name $site1Name
有什么方法可以简化吗?
谢谢,
【问题讨论】:
标签: powershell iis