Enter-PSSession cmdlet genera un error cuando se especifica la ruta de acceso de red en la variable de entorno PSModulePath

En este artículo se proporciona una solución a un problema que finaliza inesperadamente cuando se especifica una ruta de acceso de Enter-PSSession red en PSModulePath.

Versión original del producto:   Windows Server 2016, Windows Server 2012 R2
Número KB original:   4076842

Síntoma

Cuando se especifica una ruta de acceso de red en la variable de entorno PSModulePath, se produce un error en el cmdlet y recibe Enter-PSSession el siguiente mensaje de error:

Enter-PSSession: se encontró el comando 'Measure-Object' en el módulo 'Microsoft.PowerShell.Utility', pero no se pudo cargar el módulo. Para obtener más información, ejecute "Import-Module Microsoft.PowerShell.Utility".
En línea:1 char:1
+ Enter-PSSession server_name
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Measure-Object:String) [Enter-PSSession], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule

Causa

Cuando se crea una sesión de PowerShell y se autentica a través de Kerberos, la sesión no admite el doble salto. Por lo tanto, la sesión de PowerShell no se puede autenticar mediante recursos de red.

Cuando PowerShell intenta enumerar los módulos en la ruta de acceso de red, la operación produce un error de acceso denegado y el comando finaliza inesperadamente.

Solución

Para solucionar el problema, cree la sesión de PowerShell para autenticarse con CredSSP. Debe configurarse por adelantado. En el equipo que es el destino del Enter-PSSession comando, ejecute este comando:

Enable-WSManCredSSP -Role Server

En el equipo en el que ejecuta el Enter-PSSession comando, ejecute este comando:

Enable-WSManCredSSP -Role Client -DelegateComputer Server_name  

Nota

Server_name es el nombre del equipo que es el destino del Enter-PSSession comando.

Cada vez que se ejecuta este comando, el Server_name especificado se agrega a la lista. La lista se almacena en la siguiente subclave del Registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentials

Para ver el estado de la configuración de CredSSP, ejecute el Get-WSManCredSSP comando.

Después de habilitar CredSSP, puede autenticarse a través de CredSSP mediante este comando:

Enter-PSSession server_name -Authentication CredSSP -Credential (Get-Credential user_name)

Solución alternativa

Para evitar este problema, asigne el recurso compartido de red a una letra de unidad como , y luego coloque la S: letra de unidad en el archivo PSModulePath . Tener una letra de unidad que apunta a un recurso compartido de red no provocará la finalización inesperada de Enter-PSSession .

Sin embargo, dentro de la sesión remota de PowerShell, la letra de unidad asignada no estará disponible y los módulos del recurso compartido de red seguirán sin estar disponibles. Solo estarán disponibles los módulos locales.

Esta solución alternativa solo evitará que se bloquea mientras permite que las sesiones normales de PowerShell tengan acceso a los módulos que están en el recurso compartido Enter-PSSession de red.