我们使用OctopusDeploy创建网站,我们使用社区步骤网站上的创建网站模板。我稍微修改了它,以确保如果网站存在,它会添加默认绑定,但它会删除所有现有绑定。有没有办法简单地添加一个绑定到IIS,如果它已经存在(或忽略)并且不删除所有现有的绑定,则覆盖它?
我们目前的脚本如下:
$bindingInformation = "${bindingIpAddress}:${bindingPort}:${bindingHost}"
$sitePath = ("IIS:\Sites\" + $webSiteName)
$site = Get-Item $sitePath -ErrorAction SilentlyContinue
if (!$site) {
Write-Output "Creating web site $webSiteName"
$id = (dir iis:\sites | foreach {$_.id} | sort -Descending | select -first 1) + 1
new-item $sitePath -bindings ($wsBindings[0]) -id $id -physicalPath $webRoot -confirm:$false
} else {
write-host "Web site $webSiteName already exists"
Set-ItemProperty -Path $sitePath -Name Bindings -Value ($wsBindings[0])
}
看来这一行:
Set-ItemProperty -Path $sitePath -Name Bindings -Value ($wsBindings[0])
覆盖所有现有的绑定,但我似乎无法找到解决方法。
答案 0 :(得分:2)
您可以使用New-WebBinding cmdlet:
New-WebBinding `
-Name $webSiteName `
-Protocol 'http' `
-Port $bindingPort `
-IPAddress $bindingIpAddress `
-HostHeader $bindingHost
并使用Get-WebBinding cmdlet检查绑定是否已存在。
答案 1 :(得分:1)
你可以使用New-ItemProperty
,因为jisaak说,这主要是针对http(s)。
如果您需要添加其他类型的绑定,则必须使用Set-ItemProperty
,而不是New-ItemProperty -path "IIS:\Sites\YourSiteName" `
-name bindings -value @{protocol="net.pipe";bindingInformation="SiteName"}
。
<?php
$str = <<<EOT
// JSON here...
EOT;
$parsed_json = json_decode($str, true);
$parsed_json = $parsed_json['gigs'];
foreach($parsed_json as $key => $value)
{
echo $value['title'] . '<br>';
}
?>