Comunicación remota de WS-Management (WSMan) en PowerShell CoreWS-Management (WSMan) Remoting in PowerShell Core

Instrucciones para crear un punto de conexión de comunicación remotaInstructions to Create a Remoting Endpoint

El paquete de PowerShell Core para Windows incluye un complemento WinRM (pwrshplugin.dll) y un script de instalación (Install-PowerShellRemoting.ps1) en $PSHome.The PowerShell Core package for Windows includes a WinRM plug-in (pwrshplugin.dll) and an installation script (Install-PowerShellRemoting.ps1) in $PSHome. Estos archivos permiten que PowerShell acepte conexiones remotas entrantes de PowerShell cuando se especifica su punto de conexión.These files enable PowerShell to accept incoming PowerShell remote connections when its endpoint is specified.

MotivaciónMotivation

Una instalación de PowerShell puede establecer sesiones de PowerShell en equipos remotos a través New-PSSession y Enter-PSSession.An installation of PowerShell can establish PowerShell sessions to remote computers using New-PSSession and Enter-PSSession. Para permitirle aceptar conexiones remotas entrantes de PowerShell, el usuario debe crear un punto de conexión de comunicación remota de WinRM.To enable it to accept incoming PowerShell remote connections, the user must create a WinRM remoting endpoint. Se trata de un escenario de participación explícito, en el que el usuario ejecuta Install-PowerShellRemoting.ps1 para crear el punto de conexión de WinRM.This is an explicit opt-in scenario where the user runs Install-PowerShellRemoting.ps1 to create the WinRM endpoint. El script de instalación es una solución a corto plazo, hasta que agreguemos funcionalidad adicional a Enable-PSRemoting para realizar la misma acción.The installation script is a short-term solution until we add additional functionality to Enable-PSRemoting to perform the same action. Para más información, vea problema #1193.For more details, please see issue #1193.

Acciones de scriptScript Actions

El scriptThe script

  1. Crea un directorio para el complemento en $env:windir\System32\PowerShellCreates a directory for the plug-in within $env:windir\System32\PowerShell
  2. Copia pwrshplugin.dll en esa ubicación.Copies pwrshplugin.dll to that location
  3. Genera un archivo de configuración.Generates a configuration file
  4. Registra el complemento con WinRM.Registers that plug-in with WinRM

RegistroRegistration

El script debe ejecutarse en una sesión de PowerShell de nivel de administrador y se ejecuta en dos modos.The script must be executed within an Administrator-level PowerShell session and runs in two modes.

Ejecutado por la instancia de PowerShell que registraráExecuted by the instance of PowerShell that it will register

Install-PowerShellRemoting.ps1

Ejecutado por otra instancia de PowerShell en nombre de la instancia que registraráExecuted by another instance of PowerShell on behalf of the instance that it will register

<path to powershell>\Install-PowerShellRemoting.ps1 -PowerShellHome "<absolute path to the instance's $PSHOME>"

Por ejemplo:For Example:

Set-Location -Path 'C:\Program Files\PowerShell\6.0.0\'
.\Install-PowerShellRemoting.ps1 -PowerShellHome "C:\Program Files\PowerShell\6.0.0\"

Nota

El script de registro de comunicación remota reinicia WinRM.The remoting registration script restarts WinRM. Todas las sesiones de PSRP existentes se finalizan de inmediato después de ejecutar el script.All existing PSRP sessions are terminate immediately after the script is run. Si se ejecuta durante una sesión remota, el script finaliza la conexión.If run during a remote session, the script terminates the connection.

Cómo conectarse al nuevo punto de conexiónHow to Connect to the New Endpoint

Cree una sesión de PowerShell en el nuevo punto de conexión de PowerShell. Para ello, especifique -ConfigurationName "some endpoint name".Create a PowerShell session to the new PowerShell endpoint by specifying -ConfigurationName "some endpoint name". Para conectarse a la instancia de PowerShell en el ejemplo anterior, use una de las opciones siguientes:To connect to the PowerShell instance from the example above, use either:

New-PSSession ... -ConfigurationName "powershell.6.0.0"
Enter-PSSession ... -ConfigurationName "powershell.6.0.0"

Tenga en cuenta que las invocaciones New-PSSession y Enter-PSSession que no especifiquen -ConfigurationName tendrán como destino el punto de conexión predeterminado de PowerShell, microsoft.powershell.Note that New-PSSession and Enter-PSSession invocations that do not specify -ConfigurationName will target the default PowerShell endpoint, microsoft.powershell.