Estoy tratando de controlar los enlaces en una aplicación IIS usando powershell. Me gustaría crear un sitio con enlaces http y https usando un script.
Esto es lo que tengo hasta ahora:
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
¿Cómo agrego enlaces a mi $bindings
variable / uso algún otro mecanismo para lograr mi objetivo?
powershell
Khanzor
fuente
fuente
Pasé por el proceso de intentar agregar un enlace https a un sitio y puede ser bastante doloroso. Hay muchas maneras de lograr cada paso y cada una tiene dificultades. Estoy dejando atrás la solución final con la esperanza de que alguien la encuentre útil.
Esta solución supone que tiene IIS instalado y un sitio web definido. Llame al sitio sample.contoso.com para los fines de esta publicación. Suponga que tiene un certificado en un archivo sample.contoso.com.pfx que también desea usar.
El primer paso es importar el certificado del archivo.
Sería bueno si eso fuera suficiente. Y en algunos casos puede ser. Sin embargo, para mí, esto dejó el certificado sin el acceso adecuado a la clave privada. Esto provocó un error de PowerShell "No existe una sesión de inicio de sesión especificada. Es posible que ya haya finalizado" cuando agregué el certificado al enlace (consulte ese paso más adelante). Entonces, el siguiente paso es arreglar la ACL para la clave privada.
Esto permitirá que el sistema local tenga acceso completo a la clave privada si no se hereda de la carpeta que lo contiene.
Si desea obtener un certificado que ya está instalado, necesita el hash y puede recuperarlo con Get-Item de la siguiente manera:
El siguiente paso es crear el enlace.
Es importante tener en cuenta que "https" distingue entre mayúsculas y minúsculas. Si utiliza "HTTPS" en su lugar, obtendrá un resultado de enlace realmente diferente.
Este enlace aún no tiene un certificado adjunto, por lo que el último paso es adjuntar el certificado. Si el certificado es de confianza y la seguridad es correcta, este paso debe ser exitoso. Sin embargo, puede ser complicado si hay algún problema con el certificado.
Si esto falla con un mensaje sobre una sesión de inicio de sesión no existe, entonces el certificado puede tener algún problema. Revise el visor de eventos para más detalles. Durante mis esfuerzos, encontré el evento 5061 en el registro de seguridad. Cuando falló, mostró que OpenKey falló con 80090016 (El conjunto de claves no existe). Y el fallo se debió a que SYSTEM no tenía acceso a la clave privada.
Eso fue suficiente para crear el enlace https. El enlace http fue un subproducto del uso del cmdlet New-WebSite. Si no es gratis, no creo que crear el enlace del puerto 80 con el cmdlet New-WebBinding sea un desafío.
fuente
Creo que lo que buscas es lo siguiente:
Básicamente, debe pasar una serie de enlaces. Más información útil aquí - ( http://blogs.iis.net/jeonghwan/iis-powershell-user-guide-comparing-representative-iis-ui-tasks )
(Editar: error tipográfico fijo en la sintaxis de matriz - coma extraña)
fuente