Windows WinRM-Fehler: WSManSendShellInput-Parameter ist Null oder Null
Beschreibung
Dieser Fehler tritt typischerweise während Remote-PowerShell-Management-Sitzungen (WinRM) auf, wenn es eine Mismatch, Korruption oder Konfigurationsdrift zwischen dem Client-Computer und dem Remote-Host gibt. WSManSendShellInput ) fehlte, beschädigt oder auf Null geschätzt wurde.
Zu den häufigsten Ursachen gehören:
- Korrumpierte WinRM-Luschter-Einstellungen oder defekte Systemumgebungsvariablen.
- Netzwerkpaketinspektionssoftware (wie Firewalls, Proxys oder Antivirus-Suiten), die Header entfernt oder die Nutzlast während des Transits verändert.
- Nicht übereinstimmende oder beschädigte WinRM-Konfigurationsschemata zwischen den lokalen und Remote-Betriebssystemen.
- Einschränkungen der Speicherverwaltung innerhalb des WinRM-Shell-Anbieters auf der Zielmaschine.
Schrittweise Lösungen
Folgen Sie diesen Lösungen aufeinanderfolgend vom Client-Rechner (und gegebenenfalls vom Host-Rechner) aus, um das Problem zu beheben.
Lösung 1: Neustart und Reset des WinRM-Dienstes
Ein beschädigter Laufzeitzustand im WinRM-Dienst kann dazu führen, dass die API-Parameter nicht funktionieren. Durch Neustart und Registrierung der Service-Standardeinstellungen wird dieser Fehler oft behoben.
- Öffnen Sie das Startmenü und tippen Sie cmd, mit der rechten Maustaste auf Command Prompt, und wählen Run as administrator.
- Der WinRM-Dienst wird durch Ausführen des folgenden Befehls gestoppt:
net stop winrm - Starten Sie den WinRM-Dienst wieder auf:
net start winrm - Führen Sie das schnelle Konfigurationswerkzeug aus, um alle defekten Standardparameter, Zuhörer oder Firewall-Ausnahmen zu reparieren:
winrm quickconfig - Typ y (Ja), wenn Sie aufgefordert werden, Änderungen vorzunehmen oder einen neuen WinRM-Luschter zu erstellen.
Lösung 2: Grenzen für MaxShellsPerUser und MaxMemoryPerShellMB löschen
If the remote shell process hits an allocation limit, it may fail to populate the parameters required by the WSManSendShellInput Funktion.
- Starten. PowerShell as an Administrator sowohl auf dem Client als auch auf dem Remote-Rechner (falls zugänglich).
- Überprüfen Sie die vorhandenen Konfigurationsparameter durch Ausführen:
Get-Item WSMan:\localhost\Shell\* - Erhöhen Sie die Speichergrenze pro Shell, um sicherzustellen, dass komplexe Objekte nicht in Nullobjekte abgeschnitten werden:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 - Erhöhen Sie die zulässigen Shell pro Benutzer, um gleichzeitige Sitzungskonflikte zu vermeiden:
Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30 - Starten Sie den WinRM-Dienst neu, um diese Änderungen sofort anzuwenden:
Restart-Service winrm
Lösung 3: Rekonstruieren Sie die WinRM-Lustern
Wenn die Standardhörer beschädigte Eigenschaften haben, müssen Sie sie vollständig löschen und neu erstellen, um sicherzustellen, dass die API-Parameter den nativen Systemspezifikationen entsprechen.
- Öffnen. Command Prompt as an administrator.
- Sehen Sie Ihre aktuell aktiven WinRM-Zuhörer an:
winrm enumerate winrm/config/listener - Löschen Sie die fehlerhaften Zuhörer vollständig mit diesem Befehl:
winrm delete winrm/config/listener?Address=*+Transport=HTTP(Hinweis: Ändern Sie HTTP in HTTPS, wenn Ihre Netzwerkinfrastruktur WinRM über SSL verwendet).
- Wiederherstellen der Zuhörerinfrastruktur aus sauberen Systemvorlagen:
winrm quickconfig
Lösung 4: Beheben von Umgebungsvariablen und Systempfad
The WinRM sub-system relies heavily on underlying system environment variables to process structural payload schemas. Missing entries like %SystemRoot% kann zu Nullparametern führen.
- Drücken Sie die... Windows Key + R, Typ
sysdm.cpl, und schlagen. Enter um Systemeigenschaften zu öffnen. - Navigieren Sie zur... Advanced Tab und klicken Sie auf die Environment Variables Schaltfläche unten.
- Unter dem... System variables Abschnitt, finden Sie die Variable namens Path und klicken Edit.
- Ensure that the following default Windows paths are explicitly listed. If they are missing, click New Sie sind folgendermaßen hinzuzufügen:
C:\Windows\system32C:\WindowsC:\Windows\System32\WbemC:\Windows\System32\WindowsPowerShell\v1.0\
- Klicken OK Auf allen Fenstern, um die Änderungen zu speichern, und starten Sie dann Ihren Computer neu.
Lösung 5: SSL- oder Netzwerkinspektion vorübergehend umgehen
Sicherheitsanwendungen oder Hardware-Lastbalancer können benutzerdefinierte Header entfernen, wodurch WSMan-API-Argumente am Endpunkt leer ankommen.
- Wenn Sie einen Proxy-Server verwenden, umgehen Sie ihn vorübergehend für lokale Routing-Adressen, indem Sie dies in einem erhöhten PowerShell-Fenster ausführen:
$env:no_proxy="localhost,127.0.0.1,your-remote-host-ip" - Wenn das Problem auf einem bestimmten vertrauenswürdigen Zielgerät isoliert ist, fügen Sie es direkt zu Ihrer Client-Liste TrustedHosts hinzu, um Handshake-Filterung zu eliminieren:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "your-remote-host-name-or-IP" -Force - Testen Sie Ihre Remote-Shell-Verbindungssequenz nochmal.
Um das Problem näher zu identifizieren, könnten Sie ein paar weitere Details angeben:
- Erhalten Sie diesen Fehler beim Ausführen eines specific script Oder passiert es ? immediately upon connecting?
- Was ? Windows OS versions sind sowohl auf Ihrem lokalen Client als auch auf dem Remote-Host installiert?
- Verbinden Sie sich über ein lokales Netzwerk? VPN, oder durch eine domain controller environment?
Es kann einige Fehler geben.. Learn Microsoft