Para establecer una conexión entre el complemento PowerShell y Windows PowerShell, debe configurar WinRM para que utilice uno de los protocolos de comunicación compatibles.

El complemento PowerShell es compatible con Windows Remote Management (WinRM) 2.0 como protocolo de administración.

Se admiten los siguientes métodos de autenticación.
Método de autenticación Detalles
Básico Mecanismo de autenticación no seguro que requiere un nombre de usuario y una contraseña.
Kerberos Protocolo de autenticación seguro que utiliza tickets para verificar la identidad de cliente y servidor.
Nota: El complemento PowerShell no admite la delegación de credenciales de usuario en WinRM y CredSSP no es un método de autenticación compatible.

WinRM a través de HTTP

El complemento PowerShell admite la comunicación con el host WinRM mediante el protocolo HTTP. Aunque WinRM autentica la comunicación, la transferencia de datos no está cifrada y se envía como texto sin formato a través de la red. Si se configura IPSec entre las máquinas que se comunican, debe utilizar el protocolo HTTP.

Para utilizar la autenticación básica, debe establecer la propiedad AllowUnencrypted en true en el servicio y en la configuración de WinRM del cliente. Para ver un ejemplo de configuración de HTTP, consulte Configurar WinRM para usar HTTP.

WinRM a través de HTTPS

El complemento PowerShell admite la comunicación con el host WinRM mediante el protocolo HTTPS. Puede utilizar el protocolo HTTPS como un método de comunicación más seguro.

Para utilizar el protocolo HTTPS, debe generar un certificado para la autenticación del servidor e instalar el certificado en el host WinRM. Para ver un ejemplo de configuración de HTTPS, consulte Configurar WinRM para usar HTTPS.

autenticación Kerberos

Puede utilizar la autenticación Kerberos al añadir y administrar un host de PowerShell. Con la autenticación Kerberos, los usuarios del dominio pueden ejecutar comandos en máquinas remotas habilitadas para PowerShell en WinRM.

Para configurar WinRM en el host de PowerShell, ejecute el siguiente comando.
winrm quickconfig
winrm set winrm/config/service/auth '@{Kerberos="true"}'
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"}

Para obtener más información, consulte Configurar la autenticación Kerberos para complementos de Automation Orchestrator.

Configurar WinRM para usar HTTP

Puede configurar el host de WinRM para habilitar la comunicación con el complemento PowerShell a través del protocolo HTTP.

Debe modificar la configuración de WinRM mediante la ejecución de comandos en la máquina host de WinRM. Puede utilizar la misma máquina que el servicio WinRM y el cliente WinRM.

Importante: Si omite alguno de los pasos al configurar WinRM para utilizar HTTP, es posible que no se pueda agregar el host y que reciba un mensaje de error en los logs como:
Caused by: org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. 
Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)
at com.xebialabs.overthere.cifs.winrm.connector.JdkHttpConnector.sendMessage(JdkHttpConnector.java:117)

Procedimiento

  1. Ejecute el siguiente comando para establecer los valores predeterminados de la configuración de WinRM.
    c:\> winrm quickconfig
  2. (opcional) Ejecute el siguiente comando para comprobar si se está ejecutando un agente de escucha y compruebe los puertos predeterminados.
    c:\> winrm e winrm/config/listener

    Los puertos predeterminados son 5985 para HTTP y 5986 para HTTPS.

  3. Habilite la autenticación básica en el servicio WinRM.
    1. Ejecute el siguiente comando para comprobar si se permite la autenticación básica.
      c:\> winrm get winrm/config/service
    2. Ejecute el siguiente comando para habilitar la autenticación básica.
      c:\> winrm set winrm/config/service/auth '@{Basic="true"}'
  4. Ejecute el siguiente comando para permitir la transferencia de datos sin cifrar en el servicio WinRM.
    c:\> winrm set winrm/config/service @{AllowUnencrypted="true"}
  5. Si el nivel de refuerzo del token de unión de canales del servicio WinRM se establece en strict, cambie su valor a relaxed.
    c:\> winrm set winrm/config/service/auth @{CbtHardeningLevel="relajado"}
  6. Habilite la autenticación básica en el cliente WinRM.
    1. Ejecute el siguiente comando para comprobar si se permite la autenticación básica.
      c:\> winrm get winrm/config/client
    2. Ejecute el siguiente comando para habilitar la autenticación básica.
      c:\> winrm set winrm/config/client/auth @{Basic="true"}
  7. Ejecute el siguiente comando para permitir la transferencia de datos sin cifrar en el cliente WinRM.
    c:\> winrm set winrm/config/client @{AllowUnencrypted="true"}
  8. Si la máquina host de WinRM está en un dominio externo, ejecute el siguiente comando para especificar los hosts de confianza.
    c:\> winrm set winrm/config/client @{TrustedHosts="host1, host2, host3"}
  9. Ejecute el siguiente comando para probar la conexión con el servicio WinRM.
    c:\> winrm identify -r:http://servidor_winrm:5985 -auth:basic -u:nombre_de_usuario -p:contraseña -encoding:utf-8

Configurar WinRM para usar HTTPS

Puede configurar el host de WinRM para habilitar la comunicación con el complemento PowerShell a través del protocolo HTTPS.

El host WinRM requiere un certificado para poder comunicarse a través del protocolo HTTPS. Puede obtener un certificado o generar uno nuevo.

Requisitos previos

  • Configure WinRM para utilizar el protocolo HTTP. Para obtener más información, consulte Configurar WinRM para usar HTTP.
  • Compruebe que puede acceder a la consola de administración de Microsoft (mmc.exe) en el host WinRM.

Procedimiento

  1. Genere un certificado autofirmado.
    La siguiente línea de comandos contiene un ejemplo de la sintaxis para la creación de un certificado en el host WinRM mediante el cmdlet de PowerShell New-SelfSignedCertificate.
    New-SelfSignedCertificate -CertStoreLocation cert:\localmachine\my -DnsName ("machinename.subdomain.company.com", "machinename") -NotAfter (get-date).AddYears(5) -Provider "Microsoft RSA SChannel Cryptographic Provider" -KeyLength 2048

    En este ejemplo, el parámetro -NotAfter especifica que el certificado caducará en 5 años. Si no se especifica este parámetro, el certificado caduca en 1 año. Más información acerca de lacreación de certificados autofirmados.

  2. Agregue el certificado generado mediante la consola de administración de Microsoft.
    1. Ejecute mmc.exe.
    2. Seleccione Archivo > Agregar o quitar complemento.
    3. En la lista de complementos disponibles, seleccione Certificados y haga clic en Agregar.
    4. Seleccione Cuenta de equipo y haga clic en Siguiente.
    5. Haga clic en Finalizar.
    6. Compruebe que el certificado está instalado en la Raíz de la consola > Certificados (equipo local) > Personal > Certificados y Raíz de la consola > Certificados (equipo local) > Autoridades de certificación de raíz de confianza > Certificados.
      Si el certificado no se instala en las carpetas Autoridades de certificación de raíz de confianza y Personal, deberá instalarlo manualmente.
  3. Cree un agente de escucha de HTTPS utilizando la huella digital y el nombre de host correctos.
    La siguiente línea de comandos contiene un ejemplo de la sintaxis para crear un agente de escucha de HTTPS.

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="nombre_de_host";CertificateThumbprint="huella_digital_de_certificado"}

    Nota: Omita los espacios en la huella digital del certificado.

    Cuando el certificado caduca, el agente de escucha debe eliminarse y crearse de nuevo con el nuevo certificado válido.

  4. Pruebe la conexión.
    La siguiente línea de comandos contiene un ejemplo de la sintaxis para probar la conexión.

    winrs -r:https://nombre_de_host:número_de_puerto -u:nombre_de_usuario -p:contraseña hostname