Windows-Fehler: Der WinRM Shell-Client kann die Anfrage nicht verarbeiten
Beschreibung des Fehlers
This error occurs when a Windows Remote Management (WinRM) session fails to receive output data from a remote machine. The specific function WSMansReceiveShellOutput erwartet gültige Variablen, um den Datenstrom zu verarbeiten. Wenn während der Übertragung eine Netzwerkunterbrechung, ein Pufferüberfluss, eine Nichtübereinstimmung in der Datengröße oder eine Korruption auftritt, wird der erforderliche Parameter null oder null, wodurch der WinRM-Client ausfällt und die Operation abgebrochen wird.
Schrittweise Lösungen
Follow these solutions step-by-step to resolve the issue. You must run these commands on both the client (your machine) and the server (remote machine) sofern nicht anders angegeben.
Lösung 1: WinRM MaxEnvelopeSizeKB erhöhen
Die häufigste Ursache ist, dass die zurückgegebenen Daten die von WinRM zulässige Standardpaketgröße überschreiten.
- Klicken Sie auf Start menu, Typ
cmd, mit der rechten Maustaste auf Command Prompt, und wählen Run as administrator. - Überprüfen Sie Ihre aktuelle maximale Umschlaggröße, indem Sie diesen Befehl ausführen:
winrm get winrm/config - Erhöhen Sie die Umschlaggröße sowohl auf dem Client als auch auf Remote-Maschinen, um größere Datenpakete zu ermöglichen (z. B. ändern Sie sie auf 8192 KB):
winrm set winrm/config @{MaxEnvelopeSizeKB="8192"} - Wiederaufsetzen des WinRM-Dienstes, um Änderungen anzuwenden:
net stop winrm net start winrm
Lösung 2: WSMan-Anbieter MaxMemoryPerShellMB erhöhen
Wenn der Remote-Shell beim Verarbeiten der Ausgabe keinen zugewiesenen Speicher mehr hat, versagen die Funktionsparameter.
- Öffnen. PowerShell as an Administrator.
- Überprüfen Sie die aktuelle Speichergrenze pro Shell durch Ausführen:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB - Erhöhen Sie die Speichergrenze auf 2048 MB (oder höher, je nach Systemressourcen), um Auslaufzustände zu verhindern:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - Wiederherstellen des WinRM-Dienstes, um die Konfiguration zu verpflichten:
Restart-Service winrm
Lösung 3: Ändern Sie den Ausgabepuffer in Ihrem PowerShell-Skript
Wenn der Fehler während eines bestimmten Befehls oder Skripts auftritt, kann der Ausgabefluss die Pipeline überfordern.
- Öffnen Sie Ihr Skript und finden Sie den Befehl, der den Fehler verursacht.
- Anlage.
| Out-Buffer -Count 1zum Befehl, die sofortige Verarbeitung jeder Datenzeile zu erzwingen, anstatt eine große Charge zu zwischenspeichern. Beispiel:Get-WinEvent -LogName Application | Out-Buffer -Count 1 - Alternativ, wenn Sie die detaillierten Ausgabeströme nicht benötigen, können Fehler und verblüffende Ausgänge auf null umgeleitet werden:
Your-Command-Here 2>$null 3>null 4>null
Lösung 4: WinRM-Einstellungen zurücksetzen und neu konfigurieren
Wenn die Konfigurationsparameter beschädigt sind, kann das Zurücksetzen der WinRM-Architektur auf die Standardeinstellungen versteckte Probleme beheben.
- Öffnen. Command Prompt as an administrator.
- Deaktivieren Sie die WinRM-Luschterkonfiguration vollständig:
winrm invoke ResetListener winrm/config/listener?Address=*+Transport=HTTP - Reinitialisieren Sie den schnellen Konfigurationsassistenten zur Reparatur von Endpunkten und Firewall-Regeln:
winrm quickconfig -q
Es kann einige Fehler geben.. Learn Microsoft