Создание веб-сайта в IIS из powershell с несколькими привязками
Я пытаюсь сделать простой скрипт, чтобы мой сайт мог быть доступен как www.example.com
и просто example.com
, Как передать это в качестве обязательного аргумента?
Вот что я пытаюсь:
$iisApp = New-Item $iisAppName -bindings @{protocol="http";bindingInformation="*:80:"+ $url + ",*:80:www." + $url} -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName
3 ответа
Параметры bindingInformation ожидают Массив записей (каждый из которых является самим массивом, обратите внимание на @
), а не через запятую.
Пример - сначала определите правильный массив записей, а затем назначьте его в качестве аргумента bindingInformation:
$bindings = @(
@{protocol="http";bindingInformation="*:80:" + $url},
@{protocol="http";bindingInformation="*:80:www." + $url},
)
$iisApp = New-Item $iisAppName -bindings $bindings -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName
Кроме того, после создания сайта вы можете добавить дополнительные привязки с помощью команды New-WebBinding. например:
New-WebBinding -Name $iisAppName -IPAddress "*" -Port 80 -HostHeader "www.$url"
Я использую это, чтобы обновить привязки, это может кому-то помочь, так как мне пришлось самому в этом разобраться.
$hostname =$env:COMPUTERNAME
$fqdn = $env:USERDNSDOMAIN
$Bindings = Get-WebBinding |Select -expandproperty bindinginformation
$websites = Get-Website
foreach ($website in $websites)
{
$siteName=$website.name
foreach ($Binding in $Bindings)
{
$oldheader =($Binding -split ":")[-1]
if ($oldheader -eq "")
{
Set-WebBinding -Name $sitename -BindingInformation $Binding -PropertyName "HostHeader" -Value "$hostname.$fqdn"
}
}
}
Использование командлета New-WebBinding добавляет новую привязку к существующему веб-сайту
New-WebBinding -Name $web -IPAddress "*" -Порт 80 -Протокол http -HostHeader $ Сайт -sslflags
http://dotnet-helpers.com/powershell/add-binding-to-iis-powershell