🇬🇧 | 🇩🇪 | 🇫🇷 | 🇪🇸 | 🇨🇳 | 🇸🇦
Wir haben keine DLL, aber wir haben:
Windows-Dateianalysator und Online-schneller Antivirus

Eine minimalistische Benutzeroberfläche mit schneller Suche, bequemem Hochladen und einer sauberen Abteilungsstruktur.

🛡️🔍 Überprüfen Sie Ihre Datei schnell, klicken Sie einfach auf diese Seite.
Virus-Check, Hashes, Signalüberprüfung, Architektur, KI-Informationen.

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.

  1. Überprüfen Sie das Skript oder die Software (z. B. Ansible oder Jenkins), die den Fehler auslöst.
  2. Stellen Sie sicher, dass die Variablen, die die Befehle enthalten, nicht leer, undefiniert oder auf Nullwert ausgewertet sind.
  3. 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.

  1. Auf dem Ziel-Windows-Rechner öffnen Sie das Startmenü und tippen Sie Environment Variables, und wählen Edit the system environment variables.
  2. Klicken Sie auf Environment Variables... Schaltfläche unten im Fenster.
  3. unter System variables, finden Sie den Path Variable und klicken Edit.
  4. Stellen Sie sicher, dass folgende kritische Einträge vorhanden sind:
    • %SystemRoot%\system32
    • %SystemRoot%
    • %SystemRoot%\System32\Wbem
    • %SystemRoot%\System32\WindowsPowerShell\v1.0\
  5. Wenn eines davon fehlt, klicken Sie auf New und fügen sie manuell hinzu.
  6. 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.

  1. 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.
  2. Überprüfen Sie die aktuellen WinRM-Konfigurationsgrenzen durch Ausführen:
    winrm get winrm/config/winrs
  3. Erhöhen Sie den pro Shell zugewiesenen maximalen Speicher, um Out-of-Memory-Drops zu verhindern:
    winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"}
  4. 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.

  1. Öffnen Sie PowerShell als Administrator.
  2. Führen Sie den folgenden Befehl aus, um den WinRM-Dienst neu zu starten:
    Restart-Service WinRM -Force
  3. 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.

  1. Command Prompt als Administrator öffnen.
  2. Führen Sie die folgenden Befehle einzeln aus, um die Kernkomponenten neu zu registrieren:
    regsvr32 WsmSvc.dll
    regsvr32 WsmWmiPl.dll
  3. Die Maschine wird neu gestartet, nachdem die Registrierungsbestätigungsfenster angezeigt wurden.
ERROR_WINRS_CLIENT_CLOSESHELL_NULL_PARAM | ERROR_WINRS_CLIENT_FREECREATESHELLRESULT_NULL_PARAM | ERROR_WINRS_CLIENT_FREERUNCOMMANDRESULT_NULL_PARAM | ERROR_WINRS_CLIENT_SIGNAL_NULL_PARAM | ERROR_WINRS_CLIENT_RECEIVE_NULL_PARAM

Es kann einige Fehler geben.. Learn Microsoft