Powershell:通过WMI访问远程注册表

时间:2016-09-23 15:11:18

标签: powershell get-wmiobject

我有一个脚本只需通过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。

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

由于

2 个答案:

答案 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块来抛出异常并继续前进。