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

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

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

Windows WinRM 错误:WSManSendShellInput 参数为零或零

描述

这种错误通常发生在远程PowerShell管理会话 (WinRM) 中,当客户机和远程主机之间出现不匹配,腐败或配置漂移时. 这意味着WinRM shell客户端试图将数据发送到远程终端,但内部API函数所需的基本结构参数之一 ( WSManSendShellInput ) 缺失,损坏或评估为零.

常见的根源原因包括:


逐步修复问题

从客户机 (如果适用,在主机上) 顺序执行这些解决方案来解决问题.

解决方案1:重新启动和重置WinRM服务

在 WinRM 服务中受损的运行状态可能导致 API 参数失败.重启和注册服务默认常常清除此错误.

  1. 打开开始菜单,输入 cmd,右键点击 Command Prompt,并选择 Run as administrator.
  2. 通过执行以下命令停止 WinRM 服务:
    net stop winrm
  3. 重新启动 WinRM 服务:
    net start winrm
  4. 运行快速配置工具来修复任何故障的默认参数,收听器或防火墙例外:
    winrm quickconfig
  5. 它们的类型 y (是的) 如果提示进行更改或创建一个新的 WinRM 收听器.

解决方案2:清除 MaxShellsPerUser 和 MaxMemoryPerShellMB 的限制

If the remote shell process hits an allocation limit, it may fail to populate the parameters required by the WSManSendShellInput 它们的功能.

  1. 发射 PowerShell as an Administrator 在客户端和远程机器 (如果可访问).
  2. 通过运行检查现有配置参数:
    Get-Item WSMan:\localhost\Shell\*
  3. 增加每个 shell 的内存限制,以确保复杂对象不会切割成零对象:
    Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
  4. 增加每个用户允许的 shell,以防止同时会话冲突:
    Set-Item WSMan:\localhost\Shell\MaxShellsPerUser 30
  5. 重新启动 WinRM 服务以立即应用这些更改:
    Restart-Service winrm

解决方案3:重建 WinRM 收听器

如果默认的收听器有损坏的属性,则必须完全删除它们并重建它们,以确保API参数与本机系统规范相匹配.

  1. 打开 Command Prompt as an administrator.
  2. 通过运行: 查看您当前的活跃 WinRM 收听器
    winrm enumerate winrm/config/listener
  3. 使用这个命令完全删除错误的收听器:
    winrm delete winrm/config/listener?Address=*+Transport=HTTP

    (注:如果您的网络基础设施特别使用WinRM通过SSL,则将HTTP更改为HTTPS).

  4. 从干净的系统模板重新创建收听器基础设施:
    winrm quickconfig

解决方案4:修复环境变量和系统路径

The WinRM sub-system relies heavily on underlying system environment variables to process structural payload schemas. Missing entries like %SystemRoot% 可能导致零参数.

  1. 按下 Windows Key + R, 类型 sysdm.cpl,并击中 Enter 打开系统属性.
  2. 导航到 Advanced 按下按,然后点击 Environment Variables 在底部的按.
  3. 在下. System variables 找到名为的变量. Path 然后点击 Edit.
  4. Ensure that the following default Windows paths are explicitly listed. If they are missing, click New 将它们添加到:
    • C:\Windows\system32
    • C:\Windows
    • C:\Windows\System32\Wbem
    • C:\Windows\System32\WindowsPowerShell\v1.0\
  5. 点击 OK 在所有窗口上保存更改,然后重新启动计算机.

解决方案5:暂时绕过SSL或网络检查

安全应用程序或硬件负载均衡器可能会删除自定义头,导致WSMan API参数到达终端点是空的.

  1. 如果您正在使用代理服务器,请在一个升高的PowerShell窗口中执行以下操作,暂时绕过本地路由地址:
    $env:no_proxy="localhost,127.0.0.1,your-remote-host-ip"
  2. 如果问题仅限于特定的可信目标机器,请直接将其添加到客户端可信托主机列表中,以消除握手过:
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "your-remote-host-name-or-IP" -Force
  3. 试试你的远程外连接序列.

为了帮助我们进一步确定问题,

ERROR_WINRS_CLIENT_PULL_NULL_PARAM | ERROR_WINRS_CLIENT_CLOSERECEIVEHANDLE_NULL_PARAM | ERROR_WINRS_CLIENT_PUSH_NULL_PARAM | ERROR_WINRS_CLIENT_CLOSESENDHANDLE_NULL_PARAM | ERROR_WINRS_CLIENT_GET_NULL_PARAM

可能有一些错误.. Learn Microsoft