Solución para el error de Windows: Variable de entorno del cliente de WinRM Shell nulo o cero
Esta guía completa explica la causa del error WinRM y proporciona métodos fáciles y paso a paso para resolverlo.
Resumen de los errores
Lo que significa
El mensaje de error. "The WinRM Shell client cannot process the request. One of the environment variable name passed to the WSManCreateShell function is null or zero." ocurre cuando Windows Remote Management (WinRM) intenta iniciar una sesión remota de PowerShell o Prompt de comandos, pero falla porque una o más variables de entorno en el equipo local (cliente) o el equipo remoto (servidor) están dañadas, vacías o mal formateadas.
Por qué sucede
- Empty Environment Variable Names : Existe una variable del entorno del sistema o del usuario, pero tiene una cadena de nombres en blanco o nula.
- Corrupted Registry Entries : Las variables de entorno de almacenamiento de la ruta del registro de Windows contienen pares de clave-valor malformados.
- Bad PowerShell Profiles : Los scripts que se inicializan con su perfil de usuario están inyectando variables nulas en la sesión activa.
- Third-Party Software Interference : Las herramientas de seguridad o los instaladores de aplicaciones modificaron incorrectamente el bloque del entorno del sistema.
Soluciones paso a paso
Método 1: Compruebe y corrija las variables de entorno vacías a través de PowerShell
Un nombre de variable vacío dentro del bloque de configuración del entorno es la causa más común. Puede encontrarlo y eliminarlo usando una ventana local de PowerShell.
-
Open PowerShell as Administrator:
- Haga clic en el Start El menú.
- ¿ Qué tipo ? PowerShell.
- pulsa con el botón derecho. Windows PowerShell y seleccione Run as administrator.
-
Scan for Corrupted Variables:
- Copie y pegue el siguiente script en la ventana de PowerShell, luego presione Enter:
[Environment]::GetEnvironmentVariables().Keys | ForEach-Object { if ([string]::IsNullOrEmpty($_) -or \(_ -match "^\s*\)") { Write-Host "Found an empty or null environment variable name!" -ForegroundColor Red } }
- Copie y pegue el siguiente script en la ventana de PowerShell, luego presione Enter:
-
Identify and Remove via GUI (If Found):
- Presione.
Win + Ren su teclado para abrir el Run Cuadro de diálogo. - ¿ Qué tipo ?
sysdm.cply presiona. Enter para abrir. System Properties. - Ve a la... Advanced Es una tabla.
- Haga clic en el Environment Variables el botón en la parte inferior.
- Mira a través de ambos. User variables ¿ Y qué ? System variables.
- Busca específicamente cualquier fila donde el Variable columna está completamente vacía, sólo contiene espacios, o muestra símbolos dañados.
- Seleccione la fila rota y haga clic Delete.
- Haga clic OK en todas las ventanas abiertas para guardar los cambios.
- Presione.
Método 2: Limpiar las claves del registro del entorno
If the GUI does not display the broken variable, it may be hidden as a malformed entry inside the Windows Registry.
-
Open the Registry Editor:
- Presione.
Win + Ren su teclado. - ¿ Qué tipo ?
regedity presiona. Enter. - Haga clic Yes si aparece el mensaje de control de cuentas de usuario (UAC).
- Presione.
-
Check User Environment Variables:
- Navegar a la siguiente ruta en la barra lateral izquierda:
HKEY_CURRENT_USER\Environment - Mira el... Name columna en el panel derecho.
- Ensure every entry has a valid name. If you see an entry with a blank name, right-click it and select Delete.
- Navegar a la siguiente ruta en la barra lateral izquierda:
-
Check System Environment Variables:
- Navegue a la siguiente ruta:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment - Revisa el... Name columna en el panel derecho.
- Identifique cualquier entrada con nombres nulos, vacíos o sólo espacios.
- Haga clic derecho en la entrada no válida y seleccione Delete.
- Navegue a la siguiente ruta:
-
Restart Your Computer:
- Cierra el editor de registro.
- Reinicie su PC para aplicar los cambios de registro al estado del sistema.
Método 3: restablecer el servicio WinRM
Si las variables de entorno están claras, pero el cliente WinRM sigue sin funcionar, restablecer las configuraciones del servicio WinRM restablecerá las operaciones predeterminadas.
-
Open Command Prompt as Administrator:
- Haga clic en el Start El menú.
- ¿ Qué tipo ?
cmd. - pulsa con el botón derecho. Command Prompt y seleccione Run as administrator.
-
Run WinRM Quick Config:
- Escriba el siguiente comando y presione Enter:
winrm quickconfig - Si se le pide hacer cambios o analizar configuraciones, escriba
y(Sí) y presiona Enter.
- Escriba el siguiente comando y presione Enter:
-
Restart the WinRM Service:
- Ejecuta estos comandos en secuencia, pulsando Enter después de cada:
net stop winrm net start winrm
- Ejecuta estos comandos en secuencia, pulsando Enter después de cada:
Método 4: Prueba la conexión WinRM
Después de aplicar las correcciones, compruebe que el WSManCreateShell Se ha resuelto el error de inicialización.
- Abre uno nuevo. PowerShell La ventana.
- Ejecute un comando de prueba de loopback local para confirmar que el cliente de shell procesa las variables correctamente:
Test-WSMan - Si tiene éxito, pruebe la conexión remota del shell explícitamente usando:
Enter-PSSession -ComputerName localhost(Remplazar
localhostcon el nombre de destino del servidor remoto si se conecta a una máquina externa).
Puede haber algunos errores.. Learn Microsoft