Fehlerbehebung von Windows: WinRM Shell Client Parameter Null oder Null
Beschreibung des Fehlers
This error occurs when you attempt to run a command or script remotely using Windows Remote Management (WinRM), PowerShell Remoting, or a software provisioning tool like Ansible, Jenkins, or Terraform. The specific error message states: "Der WinRM Shell-Client kann die Anfrage nicht verarbeiten. Einer der für die WSManRunShellCommand-Funktion erforderlichen Parameter ist null oder null".
Dieses Problem wird in der Regel durch eine Mismatch in der WinRM-Konfiguration zwischen Client und Server, beschädigte Umgebungsvariablen auf der Zielmaschine oder eine leere Befehlszeile, die an die WinRM API weitergegeben wird, ausgelöst. Wenn der WinRM-Dienst eine Befehlslast erhält, die unsachgemäß formatiert, unvollständig oder leere Argumente enthält, kann die Funktion nicht ausgeführt werden und wirft diese Ausnahme.
Schrittweise Lösungen
Folgen Sie den folgenden Schritten, um das Problem zu lösen.
Schritt 1: Überprüfung der Kommando-Nutzlast
Die häufigste Ursache besteht darin, eine leere oder Null-Befehlszeile an die Remote-Ausführungsmaschine zu übergeben.
- Überprüfen Sie das Skript oder die Software (z. B. Ansible oder Jenkins), die den Fehler auslöst.
- Stellen Sie sicher, dass die Variablen, die die Befehle enthalten, nicht leer, undefiniert oder auf Nullwert ausgewertet sind.
- Wenn Sie einen Codeblock verwenden, überprüfen Sie, ob keine Syntaxfehler vorliegen, die dazu führen, dass die Befehlszeile vor dem Senden bricht.
Schritt 2: Überprüfung und Reparatur von Systempfad-Umgebungsvariablen
Ein beschädigtes oder fehlendes System. Path variable on the target remote machine can prevent WinRM from finding the required executables (like cmd.exe oder... powershell.exe ), wodurch er einen Nullparameter intern übergibt.
- Auf dem Ziel-Windows-Rechner öffnen Sie das Startmenü und tippen Sie Environment Variables, und wählen Edit the system environment variables.
- Klicken Sie auf Environment Variables... Schaltfläche unten im Fenster.
- unter System variables, finden Sie den Path Variable und klicken Edit.
- Stellen Sie sicher, dass folgende kritische Einträge vorhanden sind:
%SystemRoot%\system32%SystemRoot%%SystemRoot%\System32\Wbem%SystemRoot%\System32\WindowsPowerShell\v1.0\
- Wenn eines davon fehlt, klicken Sie auf New und fügen sie manuell hinzu.
- Klicken OK alle Änderungen zu speichern und den Computer neu zu starten, um sie anzuwenden.
Schritt 3: Erhöhen Sie WinRM MaxShellsPerUser und MaxMemoryPerShell
Wenn der Zielserver an zugewiesenen WinRM-Ressourcen knapp ist, können die Parameter während der Verarbeitung fallen.
- Klicken Sie mit der rechten Maustaste auf das Windows Start-Menü und wählen Sie Windows PowerShell (Admin) oder... Command Prompt (Admin) auf der Zielmaschine.
- Überprüfen Sie die aktuellen WinRM-Konfigurationsgrenzen durch Ausführen:
winrm get winrm/config/winrs - Erhöhen Sie den pro Shell zugewiesenen maximalen Speicher, um Out-of-Memory-Drops zu verhindern:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"} - Erhöhen Sie die maximale Anzahl gleichzeitiger Shell pro Benutzer, um mehrere parallele Anfragen zu bearbeiten:
winrm set winrm/config/winrs @{MaxShellsPerUser="30"}
Schritt 4: Neustart des Windows-Fernverwaltungsdienstes
Wenden Sie die neuen Konfigurationsänderungen an, indem Sie den WinRM-Dienst neu starten.
- Öffnen Sie PowerShell als Administrator.
- Führen Sie den folgenden Befehl aus, um den WinRM-Dienst neu zu starten:
Restart-Service WinRM -Force - Wenn Sie die Standardbefehlszeile verwenden, führen Sie stattdessen diese Befehle aus:
net stop winrm net start winrm
Schritt 5: Registrieren Sie die WSMan-Komponenten erneut (falls beschädigt)
Wenn die zugrunde liegenden WSMan DLL-Dateien nicht registriert oder beschädigt sind, können Sie sie erneut registrieren, um tiefe Systemprobleme zu beheben.
- Command Prompt als Administrator öffnen.
- Führen Sie die folgenden Befehle einzeln aus, um die Kernkomponenten neu zu registrieren:
regsvr32 WsmSvc.dll regsvr32 WsmWmiPl.dll - Die Maschine wird neu gestartet, nachdem die Registrierungsbestätigungsfenster angezeigt wurden.
Es kann einige Fehler geben.. Learn Microsoft