Corrección de error de Windows: Respuesta de caracteres inválidos del cliente WinRM
Descripción del error
El mensaje de error. "The WinRM client cannot process the request. The response received from the destination machine contains invalid characters and cannot be processed" typically occurs during remote management tasks using Windows Remote Management (WinRM) or PowerShell Remoting.
Este problema surge cuando el servidor remoto procesa su comando pero devuelve una salida que contiene secuencias de bytes inesperadas, caracteres no ASCII o códigos de escape ANSI (a menudo utilizados para colorear texto o formatearlo por herramientas de línea de comandos, scripts o perfiles personalizados de terceros).
Soluciones paso a paso
Solución 1: Desactiva los perfiles personalizados y el formato de texto en la máquina remota
Si la cuenta de usuario con la que se está conectando tiene un perfil de PowerShell personalizado ( $PROFILE ) o un script de inicialización del prompt de comandos que emita texto, banners o colores al iniciar sesión, romperá WinRM.
- Inicie sesión en la máquina remota directamente (a través de RDP o acceso físico).
- Abra PowerShell y compruebe si existe un perfil ejecutando:
Test-Path $PROFILE - Si vuelve.
$True, abra el archivo de perfil en el Bloc de notas:notepad $PROFILE - Comment out or remove any lines that generate visual output, print text banners, or modify text colors (such as third-party modules like
Oh-My-Posh) y de la Comisión). - Guarde el archivo y reinicie su conexión WinRM.
Corrección 2: Cambia la codificación de salida a UTF-8
Forzar tanto al host como a la máquina remota a usar la codificación UTF-8 asegura que los caracteres especiales no se interpreten mal durante la transmisión.
- En la máquina local, abra PowerShell como Administrador.
- Ejecute los siguientes comandos para configurar el entorno para usar UTF-8:
$OutputEncoding = [System.Text.Encoding]::UTF8 - Conecte a la máquina remota usando su sesión WinRM.
- Ejecute los mismos dos comandos en la sesión de la máquina remota antes de ejecutar su script o comando principal.
Solución 3: Elimine las advertencias, errores y flujos de palabras en sus comandos
Si una utilidad o comando específico dentro de su script emite caracteres de formato en bruto en las tuberías de error o advertencia, puede redirigir o suprimir explícitamente esos flujos.
- Identifique el comando que causa el problema dentro de su bloque remoto.
- En el apéndice.
6>null 7>nullo parámetros de redirección para evitar que los flujos no estándar contaminen la salida XML. Por ejemplo:Invoke-Command -ComputerName "RemoteServer" -ScriptBlock { Get-TargetData 3>$null 4>$null` } - Alternativamente, establezca las variables de preferencia al comienzo del bloque de script:
\(WarningAction = 'SilentlyContinue'\)VerbosePreference = 'SilentlyContinue'
Corrección 4: Reinicie el servicio WinRM
Un estado de servicio WinRM dañado en ambos lados a veces puede desencadenar malos comportamientos de análisis.
- En la máquina remota, abra PowerShell como Administrador.
- Reinicie el servicio de administración remota de Windows ejecutando:
Restart-Service WinRM -Force - En su máquina local, abra PowerShell como Administrador y reinicie también su servicio WinRM local:
Restart-Service WinRM -Force
ERROR_WSMAN_ENUMERATE_WMI_INVALID_KEY | ERROR_WSMAN_INVALID_FRAGMENT_PATH_BLANK | ERROR_WSMAN_KERBEROS_IPADDRESS | ERROR_WSMAN_CLIENT_WORKGROUP_NO_KERBEROS | ERROR_WSMAN_INVALID_BATCH_SETTINGS_PARAMETER
Puede haber algunos errores.. Learn Microsoft