解决Windows错误: WinRM WSManEnumeratorAddObject 零参数
没有.
这个错误发生在Windows远程管理 (WinRM) 客户端尝试列举对象时,但远程服务器或本地提供商返回的数据结构受损,意想不到或完全为零. WinRM设置列举模式返回对象详细信息时,预计一个有效的对象 ( Object 或是 ObjectAndEPR ) 没有.
最常见的原因包括:
- Corrupted WMI Repository: WinRM主要依赖于Windows管理仪器 (WMI) 基础设施.如果WMI受损,它将零数据传递给WinRM.
- Corrupted WinRM Configuration: 损坏的 WinRM 收听器或损坏的内部 WSMan 配置.
- Incompatible PowerShell modules or broad queries: 一个脚本或管理工具查询一个庞大的基础设施,触发一个未处理的边缘案例或返回数据预期的空负载.
逐步修复问题
按照顺序执行这些解决方案,直到错误得到解决.
解决方案1:重新启动和重置WinRM服务
最快的解决方案是重新启动 WinRM 服务,重新构建其配置以清除任何卡住或受损的内存对象.
- 打开开始菜单,输入 cmd,右键点击 Command Prompt,并选择 Run as administrator.
- 通过键入下面的命令并按下关闭 WinRM 服务 Enter:
net stop winrm - 重新启动 WinRM 服务:
net start winrm - 将 WinRM 配置重置到其默认设置,运行:
winrm quickconfig -q - 检查是否仍然出现错误.
解决方案2:验证和修复WMI存储器
由于 WinRM 直接从 WMI 中获取对象属性,因此受损的 WMI 存储库经常会导致 null 指针错误.
- 打开 Command Prompt as administrator.
- 通过运行验证您的WMI存储器的一致性:
winmgmt /verifyrepository - 如果输出显示 "存储库不一致" ,运行下面的命令来修复它:
winmgmt /salvagerepository - If salvaging fails, force a complete rebuild of the WMI repository with these commands (press Enter 在每行之后):
net stop winmgmt /y winmgmt /resetrepository net start winmgmt - 重新启动您的计算机并再次测试您的 WinRM 连接.
解决方案3:重新注册WMI组件和DLL文件
如果底层的 Windows 组件无法正确序列化 WinRM 数据,重新注册操作系统的管理库将解决问题.
- 打开 Command Prompt as administrator.
- 运行下面的命令重新注册所有WMI
.mof文件:CD C:\Windows\System32\Wbem for /f %s in ('dir /b *.mof') do mofcomp %s - 接下来,通过运行:
for /f %s in ('dir /b *.dll') do regsvr32 /s %s - 请重新启动电脑.
解决方案4:通过PowerShell清理WSMan提供器
如果您正在运行特定脚本或使用系统中心配置管理器 (SCCM) 或Hyper-V管理器等工具,请清除缓存的WSMan提供者路径.
- 打开开始菜单,搜索 PowerShell,右键点击它,并选择 Run as administrator.
- 导航到WSMan提供器驱动器检查配置:
cd WSMan:\localhost dir - 如果您注意到死亡的收听器或过时的终端,请使用删除项命令删除它们:
Remove-Item .\Listener\* -Recurse - 现在就跑吧.
winrm quickconfig为了重建清洁的听众.
ERROR_WSMAN_CANNOT_PROCESS_FILTER | ERROR_WSMAN_CLIENT_ENUMERATORADDEVENT_NULL_PARAM | ERROR_WSMAN_ADDOBJECT_MISSING_EPR | ERROR_WSMAN_NETWORK_TIMEDOUT | ERROR_WINRS_RECEIVE_IN_PROGRESS
可能有一些错误.. Learn Microsoft