Я пытаюсь контролировать привязки в приложении IIS с помощью powershell. Я хотел бы создать сайт с привязкой http и https, используя скрипт.
Это то, что я до сих пор:
Param(
[Parameter(Mandatory=$True,Position=1)]
[string]$hostname,
[Parameter(Mandatory=$True,Position=2)]
[string]$installPath,
[Parameter(Mandatory=$False,Position=3)]
[string]$ip
)
Import-Module WebAdministration
$appPoolName = $hostname + 'Pool'
$port = 80
$hostRecord = $hostname+'.example.com'
$bindings = @{protocol="http";bindingInformation=$ip + ":"+ $port + ":" + $hostRecord}
New-Item IIS:\AppPools\$appPoolName
Set-ItemProperty IIS:\AppPools\$appPoolName managedRuntimeVersion v4.0
New-Item IIS:\Sites\$hostname -Bindings $bindings -PhysicalPath $installPath
Set-ItemProperty IIS:\Sites\$hostname -Name applicationPool -Value $appPoolName
Как мне добавить привязки к моей $bindings
переменной / использовать какой-то другой механизм для достижения моей цели?
powershell
Khanzor
источник
источник
Я попытался добавить привязку https к сайту, и это может быть довольно болезненным. Есть много способов выполнить каждый шаг, и у каждого есть свои подводные камни. Я оставляю окончательное решение в надежде, что кто-то найдет его полезным.
Это решение предполагает, что у вас установлен IIS и определен веб-сайт. Позвоните на сайт sample.contoso.com для целей этого поста. Предположим, у вас есть сертификат в файле sample.contoso.com.pfx, который вы также хотите использовать.
Первым шагом является импорт сертификата из файла.
Было бы хорошо, если бы этого было достаточно. И в некоторых случаях это может быть. Однако для меня это оставило сертификат без надлежащего доступа к закрытому ключу. Это вызвало ошибку powershell «Указанный сеанс входа не существует. Возможно, он уже был прерван», когда я пошел, чтобы добавить сертификат в привязку (см. Этот шаг позже). Итак, следующим шагом является исправление ACL для закрытого ключа.
Это позволит локальной системе иметь полный доступ к закрытому ключу, если он не унаследован от содержащей папки.
Если вы хотите получить сертификат, который уже установлен, вам нужен хеш для него и вы можете получить его с помощью Get-Item следующим образом:
Следующим шагом является создание привязки.
Важно отметить, что «https» чувствителен к регистру. Если вместо этого вы используете «HTTPS», вы получите действительно другой результат привязки.
К этой привязке еще не прикреплен сертификат, поэтому последний шаг - прикрепить сертификат. Если сертификат правильно доверенный и безопасность правильная, этот шаг должен быть успешным. Это может быть привередливым, если есть какие-либо проблемы с сертификатом, хотя.
Если это не удается с сообщением о том, что сеанс входа в систему не существует, то сертификат может иметь некоторые проблемы. Просмотрите программу просмотра событий для получения более подробной информации. Во время своих усилий я обнаружил событие 5061 в журнале безопасности. Когда это не удалось, он показал, что OpenKey не удалось с 80090016 (набор ключей не существует). И ошибка была в том, что у SYSTEM не было доступа к закрытому ключу.
Этого было достаточно для создания привязки https. Привязка http была побочным продуктом использования командлета New-WebSite. Если это не бесплатно, я не считаю создание привязки порта 80 с помощью командлета New-WebBinding.
источник
Я думаю, что вы ищете следующее:
В основном вам нужно передать массив привязок. Более полезная информация здесь - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing-representive-iis-ui-tasks )
(Правка: исправлена опечатка в синтаксисе массива - посторонняя запятая)
источник