創建覆蓋兩個類的 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%")
但是,如果有人有改進或其他方法,我想知道。
好像你有一個命名約定,所以也許你可以做這樣的事情:
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