1

我有一个脚本,它通过 WMI 和 Powershell 简单地连接到远程计算机的注册表:

$Server = server1
$HKLM = [UInt32] "0x80000002"
$WMI_Reg = [WMIClass] "\\server1\root\default:StdRegProv"

对于我们 300 台服务器中的大多数来说,这很好,我可以在注册表上进行后续查询。但是,对于少数几个,我收到此错误:

无法将值“\server1\root\default:stdregprov”转换为类型“System.Management.ManagementClass”。错误:“未找到”

这些都是 2008 R2 服务器。最初,无效的 WMI 提供程序存在问题,我必须在此错误之前重新编译 cimWin32.mof。

关于我接下来可以做什么的任何想法?

谢谢

4

2 回答 2

0

这些错误通常是由缺少 WMI 类引起的。此类错误的解决方案通常涉及几个步骤。

可以在此链接下找到解决方案:https ://blogs.technet.microsoft.com/askperf/2014/08/11/wmi-missing-or-failing-wmi-providers-or-invalid-wmi-class/

重要提示:根据 Microsoft,请不要在第一步重建 mof 文件:

“当应首先采取其他步骤时,重建存储库或重新编译所有 .mof 文件作为第一个操作可能会损坏系统和/或已安装的应用程序。”

于 2016-09-23T15:41:23.480 回答
0

无法将值“\server1\root\default:stdregprov”转换为类型“System.Management.ManagementClass”。错误:“未找到”

此错误是因为它没有找到您要查找的密钥。这是 key 不存在的基本情况。您可以检查注册表项是否存在?

根据提供的信息,这里没有问题WMI

您始终可以使用 try 和 catch 块来引发异常并继续前进。

于 2016-09-23T17:08:53.483 回答