![无法查询 WMI 中的某些命名空间/类(Get-WmiObject:不支持)](https://linux22.com/image/753488/%E6%97%A0%E6%B3%95%E6%9F%A5%E8%AF%A2%20WMI%20%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%2F%E7%B1%BB%EF%BC%88Get-WmiObject%EF%BC%9A%E4%B8%8D%E6%94%AF%E6%8C%81%EF%BC%89.png)
我正在尝试查询root\microsoft\windows\managementtools
命名空间中的类,但出现了一个奇怪的错误。我已确认此命名空间在我的计算机上存在,因为我可以使用 WMIExplorer 查询它。以下是错误:
C:\> Get-WmiObject -Namespace ROOT\Microsoft\Windows\ManagementTools -Query "SELECT * FROM MSFT_MTRegistryKey"
Get-WmiObject : Not supported
At line:1 chat:1 ...
我正在 Windows 2016 服务器上通过管理员 powershell 本地运行此程序。我确认管理员组在 WMI 安全选项卡中拥有所有访问权限。
答案1
考虑到GetKey
该类的方法返回同一类的对象,我认为您不能以这种方式查询它。您实际上正在做的是获取本地计算机整个注册表中每个单个键的实例。本网站声称这一数字将达到数百万。
也许你想尝试
Invoke-WmiMethod -Namespace root\microsoft\windows\managementtools -Class MSFT_MTRegistryKey -Name GetKey -ArgumentList '<name of key>'
然后您可以在返回对象上调用GetSubKeys
或GetValues
调用其Result
属性。
顺便说一下,还有标准注册程序使用 WMI/CIM 查询注册表的类。