解决Windows错误: WinRS客户端函数参数错误
描述
This error occurs when the Windows Remote Management (WinRM) or Windows Remote Shell (WinRS) client fails to process a remote command execution request. Specifically, the message The parameter required for the WinrsFreeRunCommandResult function is null or zero 指的是客户端和远程服务器之间的内存,配置或通信不匹配.通常指的是受损的系统变量,WinRM服务限制内的内存分配问题,或本地计算机和远程机器之间的不兼容更新/配置.
逐步修复问题
修复1:重新启动WinRM服务
在 Windows 远程管理服务中受损的会话或暂时故障可能导致此内存跟踪错误.重启服务迫使 Windows 清除这些会话参数.
- 按下 Windows Key + R 打开运行对话框.
- 它们的类型
services.msc然后按下. Enter. - 在列表中向下滚动查找. Windows Remote Management (WS-Management).
- 右键点击它并选择 Restart (或是 Start 如果它没有运行).
- 打开命令行工具,再尝试运行 WinRS 命令,检查是否解决了错误.
修复2:增加 MaxMemoryPerShellMB 配置
If the remote shell process demands more memory than the default configuration allows, parameters inside the internal WinrsFreeRunCommandResult 函数可以失败或返回 null 值.
- 按下 Windows Key, 类型
cmd,右键点击 Command Prompt,并选择 Run as administrator. - 运行下一个命令来检查您当前的 WinRM 配置限制:
winrm get winrm/config/winrs - 看看这个
MaxMemoryPerShellMB如果值低 (比如150MB或512MB),则通过运行这个命令将其增加到2048MB:winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"} - 如果需要,在本地客户端计算机和目标远程服务器上执行相同步骤,然后测试您的远程连接.
修复3:运行 SFC 和 DISM 修复
系统文件损坏可能会损坏负责 WinRS 客户端功能的底层 DLL 文件.标准的 Windows 部署工具可以自动修复这些文件.
- 打开 Command Prompt 作为一个管理员.
- 键入下面的命令来检查部署图像状态,然后按下 Enter:
DISM.exe /Online /Cleanup-image /Restorehealth - 让这个过程达到100%的完成.
- 输入系统文件检查器命令并按下 Enter:
sfc /scannow - 在扫描完成后重新启动电脑,再尝试运行远程命令.
修复4:将WinRM配置重置为默认
如果 WinRM 服务的配置设置或安全描述符已受损,则重置整个服务框架将消除问题.
- 打开 Command Prompt 作为一个管理员.
- 执行配置重置命令:
winrm quickconfig - 如果提示要进行更改,请输入
y然后按下. Enter 允许该工具修复收听器和防火墙异常. - 重新配置您以前使用的任何特定自定义端口或身份验证机制.
ERROR_WINRS_CLIENT_FREECREATESHELLRESULT_NULL_PARAM | ERROR_WINRS_CLIENT_RUNCOMMAND_NULL_PARAM | ERROR_WINRS_CLIENT_SIGNAL_NULL_PARAM | ERROR_WINRS_CLIENT_RECEIVE_NULL_PARAM | ERROR_WINRS_CLIENT_FREEPULLRESULT_NULL_PARAM
可能有一些错误.. Learn Microsoft