Estou tentando controlar as ligações em um aplicativo IIS usando o PowerShell. Eu gostaria de criar um site com uma ligação http e https usando um script.
Isto é o que tenho até agora:
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
Como adiciono ligações à minha $bindings
variável / uso algum outro mecanismo para alcançar meu objetivo?
powershell
Khanzor
fonte
fonte
Eu passei pelo processo de tentar adicionar uma ligação https a um site e isso pode ser bastante doloroso. Existem várias maneiras de realizar cada etapa e cada uma delas possui armadilhas. Estou deixando para trás a solução final, esperando que alguém a ache útil.
Esta solução pressupõe que você tenha o IIS instalado e um site definido. Ligue para o site sample.contoso.com para os fins desta postagem. Suponha que você tenha um certificado em um arquivo sample.contoso.com.pfx que também deseja usar.
A primeira etapa é importar o certificado do arquivo.
Seria bom se isso fosse suficiente. E, em alguns casos, pode ser. No entanto, para mim, isso deixou o certificado sem acesso adequado à chave privada. Isso causou um erro no PowerShell "Não existe uma sessão de logon especificada. Ela já pode ter sido encerrada" quando adicionei o certificado à ligação (consulte essa etapa posteriormente). Portanto, a próxima etapa é corrigir a ACL da chave privada.
Isso permitirá que o sistema local tenha acesso total à chave privada se isso não for herdado da pasta que o contém.
Se você deseja obter um certificado que já está instalado, é necessário o hash e pode recuperá-lo com Get-Item da seguinte forma:
O próximo passo é criar a ligação.
É importante observar que "https" diferencia maiúsculas de minúsculas. Se você usar "HTTPS", obterá um resultado de ligação realmente diferente.
Essa ligação ainda não possui um certificado anexado; portanto, a última etapa é anexar o certificado. Se o certificado for adequadamente confiável e a segurança estiver correta, esta etapa será bem-sucedida. Pode ser complicado se houver algum problema com o certificado.
Se isso falhar com uma mensagem sobre uma sessão de logon não existir, o certificado poderá ter algum problema. Revise o visualizador de eventos para obter mais detalhes. Durante meus esforços, encontrei o evento 5061 no log de segurança. Quando falhou, mostrou que o OpenKey falhou com 80090016 (O conjunto de chaves não existe). E a falha ocorreu porque o SYSTEM não teve acesso à chave privada.
Isso foi suficiente para criar a ligação https. A ligação http foi um subproduto do uso do cmdlet New-WebSite. Se não for de graça, não considero um desafio criar a ligação da porta 80 com o cmdlet New-WebBinding.
fonte
Eu acho que o que você procura é o seguinte:
Basicamente, você precisa passar uma matriz de ligações. Informações mais úteis aqui - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing-representative-iis-ui-tasks )
(Editar: erro de digitação corrigido na sintaxe da matriz - vírgula estranha)
fonte