当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 搜索 CIM/WMI 类

作者:精品下载站 日期:2024-12-14 07:53:08 浏览:11 分类:玩电脑

使用 PowerShell 搜索 CIM/WMI 类


我在 Twitter 上收到一个关于我发布的通过 WMI 获取防病毒信息的旧功能的问题。尽管总有改进的空间,但该功能在 Windows 10 上仍然可以正常工作。但问题是,在查询运行 Windows Server 2016 或更高版本的服务器时,该功能似乎不起作用。情况似乎确实如此。据我所知,我的函数正在查询的 WMI 命名空间在 Windows Server 2016 及更高版本上不存在。我想我需要搜索一下其他地方是否有防病毒产品。所以今天早上我写了一个函数来搜索所有 WMI 命名空间中的类名。

我的函数 Find-CimClass 使用 CIM cmdlet 递归搜索计算机上的所有命名空间(默认为本地主机)以查找给定的类名。您可以使用通配符作为类名称。我还提供了一个排除模式选项,它可以是正则表达式模式。例如,我可能会搜索类名,但想要排除任何 Win32_Perf* 类。该函数可以作为要点在我的 GitHub 存储库中找到。

https://gist.github.com/jdhitsolutions/66722c63fbd244904e0a3b09cd9909bd

因为我要进行重复查询,所以我创建了一个临时 CIMSession。在查询本地计算机时我并不真正需要它,并且可以添加代码以仅在计算机名是远程的情况下创建 CIMSession。但为了简单起见,我还是创建了一个临时 CIMSession。您将在函数中看到的另一个脚本元素是 Write-Progress 的使用。该功能需要一点时间才能完成,我想提供反馈。

[玩转系统] 使用 PowerShell 搜索 CIM/WMI 类

当您浏览代码时,我希望您会意识到使用 Write-Progress 并不那么困难。我认为更多的脚本编写者需要利用这个命令。

有了这个工具,我在 Windows Server 2016 机器上搜索了任何与防病毒相关的内容,但没有结果。老实说,我没有深入研究过这个问题,但到目前为止,我对 WMI 的搜索似乎是 Microsoft 删除了所有相关的命名空间和类,或者将它们更改为我没有想到或发现的内容。

不管怎样,我现在的工具箱里有另一个工具可以轻松发现 WMI 中的内容。我希望你能让我知道你的想法。

更新 :

在发布原始文章和函数后不久,我意识到我用来枚举名称空间的逻辑是不完整的。我只获得了前两层命名空间。我最终添加了一个内部函数来递归列出所有名称空间。我之前在 Windows 10 机器上搜索 57,现在搜索 150。不幸的是,这并没有影响 Windows Server 2016 上防病毒类别的搜索结果。

更新#2:

在搜索了我能想到的任何内容后,我偶然发现了 Windows Server 2016 上 Root\Microsoft\SecurityClient 命名空间中的 ProtectionTechnologyStatus 类。这似乎包含所有相关信息。

[玩转系统] 使用 PowerShell 搜索 CIM/WMI 类

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯