🇬🇧 | 🇩🇪 | 🇫🇷 | 🇪🇸 | 🇨🇳 | 🇸🇦
我们没有DLL,但我们有:
Windows文件分析器和在线快速反病毒

一个简约的界面,具有快速搜索,方便的上传和干净的部分结构.

🛡️🔍 快速验证你的档案,只需要放上这个页面.
病毒检查,哈希,签名验证,架构,人工智能信息.

解决Windows错误:WinRM Shell客户端参数零或零

错误的描述

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: "WinRM Shell客户端无法处理请求.WSManRunShellCommand函数所需的参数之一是零或零. "

这种问题通常是由客户端和服务器之间的 WinRM 配置不匹配,目标机器上的环境变量受损,或将空的命令字符串传递给 WinRM API 引发的.当 WinRM 服务接收到格式不当,不完整或包含空参数的命令有效负载时,它无法执行函数并抛出此异常.


逐步修复问题

按照以下步骤来解决问题.

步骤1:验证命令有效载荷

最常见的原因是将空或零命令字符串传递给远程执行引擎.

  1. 检查导致错误的脚本或软件 (如Ansible或Jenkins).
  2. 确保包含命令的变量不是空的,未定义的,或者以零值进行评估.
  3. 如果您正在使用一个代码块,请验证在发送之前没有语法错误导致命令字符串断裂.

步骤2:检查和修复系统路径环境变量

一个受损或缺失的系统. Path variable on the target remote machine can prevent WinRM from finding the required executables (like cmd.exe 或是 powershell.exe ),使其内部通过一个零参数.

  1. 在目标的Windows机器上,打开开始菜单,键入 Environment Variables,并选择 Edit the system environment variables.
  2. 按下 Environment Variables... 在窗口底部的按.
  3. 在下面 System variables 找到了 Path 变量和点击 Edit.
  4. 确保存在以下关键条目:
    • %SystemRoot%\system32
    • %SystemRoot%
    • %SystemRoot%\System32\Wbem
    • %SystemRoot%\System32\WindowsPowerShell\v1.0\
  5. 如果其中任何一个缺失,请点击 New 并将它们手动添加.
  6. 点击 OK 保存所有更改并重新启动计算机来应用它们.

步骤3:增加 WinRM MaxShellsPerUser 和 MaxMemoryPerShell

如果目标服务器分配的WinRM资源耗尽,它可能会在处理过程中丢失参数.

  1. 右键单击Windows开始菜单并选择 Windows PowerShell (Admin) 或是 Command Prompt (Admin) 在目标机器上.
  2. 通过运行检查当前 WinRM 配置限制:
    winrm get winrm/config/winrs
  3. 增加每个 shell 所分配的最大内存,以防止内存丢失:
    winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"}
  4. 增加每个用户的同时 shell 的最大数量,以处理多个并行请求:
    winrm set winrm/config/winrs @{MaxShellsPerUser="30"}

步骤4:重新启动Windows远程管理服务

通过重新启动 WinRM 服务应用新配置更改.

  1. 打开PowerShell作为管理员.
  2. 运行以下命令重新启动 WinRM 服务:
    Restart-Service WinRM -Force
  3. 如果您使用标准命令提示符,则运行以下命令:
    net stop winrm
    net start winrm

步骤5:重新注册WSMan组件 (如果损坏)

如果底层的WSMan DLL文件未注册或受损,您可以重新注册它们来解决深层系统问题.

  1. 作为管理员打开命令提示符.
  2. 执行下列命令,一个接一个地重新注册核心组件:
    regsvr32 WsmSvc.dll
    regsvr32 WsmWmiPl.dll
  3. 在注册确认窗口出现后重新启动机器.
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

可能有一些错误.. Learn Microsoft