如何修复Windows服务器上Facter无法获取'os'等Fact的报错?
Facter执行报错的原因与修复方案
问题描述
在Windows服务器上执行facter命令时突发以下报错,两周前该命令运行正常,目前已导致部分Ruby脚本执行失败:
报错信息
[stdout][0;36mDebug: Loading facts from C:/ProgramData/.../facter/windows_version.rb[0m [stderr]Could not retrieve fact='os', resolution='<anonymous>': failed to parse display name of moniker `winmgmts:{impersonationLevel=impersonate}!//./root/cimv2' [stderr] HRESULT error code:0x80010114 [stderr] The requested object does not exist. [stderr]Could not retrieve fact='os', resolution='<anonymous>': failed to parse display name of moniker `winmgmts:{impersonationLevel=impersonate}!//./root/cimv2' [stderr] HRESULT error code:0x80010114 [stderr] The requested object does not exist. [stderr]Could not retrieve fact='os', resolution='<anonymous>': failed to parse display name of moniker `winmgmts:{impersonationLevel=impersonate}!//./root/cimv2' [stderr] HRESULT error code:0x80010114 [stderr] The requested object does not exist. [stderr]Could not retrieve fact='virtual', resolution='<anonymous>': failed to parse display name of moniker `winmgmts:{impersonationLevel=impersonate}!//./root/cimv2' [stderr] HRESULT error code:0x80010108
原因分析
- WMI服务异常或损坏:Facter依赖WMI(Windows Management Instrumentation)获取系统信息,报错中的
winmgmts是WMI的访问标识,HRESULT 0x80010114和0x80010108均指向WMI服务故障,可能是服务停止、WMI存储库损坏,或是系统更新、第三方软件修改了WMI配置。 - 权限问题:执行
facter的用户缺少访问WMI命名空间root/cimv2的权限,可能是近期权限策略变更导致。 - Facter组件损坏:Facter的Windows相关fact脚本(如
windows_version.rb)损坏,或Facter本身的依赖库出现问题。
修复步骤
1. 重启WMI相关服务
- 打开服务(运行
services.msc),找到以下服务:- Windows Management Instrumentation
- WMI Performance Adapter
- Remote Procedure Call (RPC)
- 依次停止这些服务,再重新启动。
2. 重建WMI存储库
- 以管理员身份打开命令提示符(CMD),执行以下命令:
net stop winmgmt cd %systemroot%\system32\wbem ren repository repository.old net start winmgmt winmgmt /resetrepository - 执行完成后重启服务器,再测试
facter命令。
3. 检查并修复WMI权限
- 打开WMI控制(运行
wmimgmt.msc),右键点击WMI控制(本地) → 属性。 - 切换到安全选项卡,展开
Root→cimv2,点击安全按钮。 - 确保执行
facter的用户拥有读取权限,若没有则添加并设置对应权限。
4. 重新安装或修复Facter
- 若使用安装包部署的Facter,卸载当前版本后从官方渠道下载对应版本重新安装。
- 若使用Ruby gem安装的Facter,执行以下命令重新安装:
gem uninstall facter gem install facter
5. 排查系统更新与第三方软件
- 查看近期是否安装了Windows更新或第三方管理软件,若有则尝试卸载更新或软件,验证问题是否解决。
内容的提问来源于stack exchange,提问作者Siddhesh Kulkarni
相关产品推荐
相关产品推荐

