创建涵盖两个类的 WMI 过滤器

创建涵盖两个类的 WMI 过滤器

我正在尝试创建一个 WMI 过滤器来选择所有工作站和 RDS 服务器

我目前正在使用

SELECT * FROM Win32_OperatingSystem WHERE (ProductType = "1") OR (CSName = "288-RDS01") OR (CSName = "288-RDS02")

但是如果 RDS 服务器名称发生变化,则此方法不起作用。

理想情况下,我希望运行更接近

SELECT * FROM Win32_OperatingSystem WHERE (ProductType = "1"); SELECT * FROM Win32_ServerFeature WHERE ID = 18

根据我的研究,如果我对过滤器应用了 2 个查询,则两个查询都必须返回 true,过滤器才会返回 true。

这是可能的吗?或者第一个查询就是我能得到的最好的结果?

我最终选择了

SELECT * FROM Win32_OperatingSystem WHERE (ProductType = "1") OR (CSName LIKE "288-RDS%")

但如果有人有改进或其他方法,我很想知道。

答案1

似乎你有一个命名约定,所以也许你可以做这样的事情: SELECT * FROM Win32_ComputerSystem WHERE (Name LIKE '%-RDS%') OR (Name LIKE '%whatever%')

答案2

以下 WMI 查询应该可以工作 - 在 Win32_OperatingSystem 下有一个 OSProductSuite 值,您可以使用它来检测终端服务,这是远程桌面服务器的旧名称。

我找不到在 WQL 中执行按位运算的方法,因此根据您的环境,您可能需要终端服务(16),或在 Windows Server Enterprise Edition 上运行的终端服务(16+2 = 18),或在 Windows Server Datacenter Edition 上运行的终端服务(128+2 = 144),以及可能的其他组合 - 但它确实有效。

最后的 ProductType = 1 涵盖工作站。

SELECT OSProductSuite, ProductType FROM Win32_OperatingSystem WHERE OSProductSuite = "16" OR OSProductSuite = "18" OR OSProductSuite = "144" OR ProductType = "1"

https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-operatingsystem

相关内容