Windows

創建覆蓋兩個類的 WMI 過濾器

  • March 23, 2021

我正在嘗試創建一個 WMI 過濾器來選擇所有工作站和 RDS 伺服器

我目前正在使用

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

但如果 R​​DS 伺服器名稱更改,這將不起作用。

理想情況下,我想執行一些更接近

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%")

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

好像你有一個命名約定,所以也許你可以做這樣的事情: SELECT * FROM Win32_ComputerSystem WHERE (Name LIKE '%-RDS%') OR (Name LIKE '%whatever%')

以下 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

引用自:https://serverfault.com/questions/992257