我有一个脚本只需通过WMI和Powershell连接到远程计算机的注册表:
$Server = server1
$HKLM = [UInt32] "0x80000002"
$WMI_Reg = [WMIClass] "\\server1\root\default:StdRegProv"
对于我们300台服务器中的大多数,这很好,我可以在注册表上进行后续查询。但是,对于少数几个,我收到此错误:
无法转换值" \ server1 \ root \ default:stdregprov"输入 " System.Management.ManagementClass&#34 ;.错误:"未找到"
这些都是2008 R2服务器。最初,无效的WMI提供程序存在问题,我不得不在此错误之前重新编译cimWin32.mof。
关于我接下来可以做什么的任何想法?
由于
答案 0 :(得分:0)
这些错误通常是由缺少WMI类引起的。这种错误的解决方案通常涉及几个步骤。
可以在此链接下找到解决方案:https://blogs.technet.microsoft.com/askperf/2014/08/11/wmi-missing-or-failing-wmi-providers-or-invalid-wmi-class/
重要提示:根据Microsoft的说法,请不要重建mof文件作为第一步:
“当首先采取其他步骤时,重建存储库或重新编译所有.mof文件作为第一个操作可能会对系统和/或已安装的应用程序造成损害。”
答案 1 :(得分:0)
无法将值“\ server1 \ root \ default:stdregprov”转换为“System.Management.ManagementClass”类型。 错误:“找不到”
此错误是因为它找不到您要查找的密钥。当密钥不存在时,这是一个基本情况。你能检查注册表项是否存在吗?
根据提供的信息,此处WMI
没有问题。
你总是可以使用try和catch块来抛出异常并继续前进。