我面临一个挑战,我想使用 GPO 来设置电源计划。
在构建 WMI 过滤器(使用 WQL)时,我遇到了一个问题,即确定一组始终返回true
台式机/服务器和false
笔记本电脑/笔记本的 WQL 语句。
win32_systemenclosure
我开始测试属性的使用ChassisTypes
,但很快发现ChassisTypes
是一个int array
,它不能在(标准)WQL 中使用[尽管它在 SCCM WQL 扩展集中可用]。
接下来我找到了使用win32_battery
和检查Status
属性是否为非零值的参考;但我很快意识到这将返回通过 USB 连接 UPS 的台式机和服务器上的值。
由于以上任何一种情况都不会(+/- 可容忍的 N)出现true
在台式机/服务器以及false
笔记本电脑/笔记本上,因此我位于班上win32_portablebattery
。
兴奋之余,我开始测试,很快发现win32_portablebattery
在桌面或服务器上执行时什么都不返回。我说的“什么都不返回”不是指{empty string}/""
,不是指NULL
,也不是指false
,而是指真的什么都不返回。我甚至尝试检查__CLASS = ""
和和两者在桌面和服务器上__CLASS IS NULL
仍然返回。false
是否有人知道使用WQL
-fu 尝试获取结果?true
win32_portablebattery
答案1
您可以做两件事。
如果您有标准计算机型号,则可以根据
Win32_ComputerSystem
型号属性进行过滤。如果您使用组策略首选项,则可以
Item Level Targeting
根据多种因素来筛选出该策略适用的用户/计算机。其中之一是便携式电脑瞄准. 简单来说就是Windows会决定机器是否可移植。
我个人比较喜欢 #2,因为如果使用不当,你总是可以责怪微软,并告诉用户
MS 认为您的计算机应该是便携式的。
答案2
这不是您问题的确切答案,但它可能对您有用。
我使用内存的外形尺寸来确定某物是否是笔记本电脑。因此,我们的 WMI 过滤器(true
在笔记本电脑上返回)是:
Select * from Win32_PhysicalMemory where FormFactor = 12
当然,如果您需要它返回false
,(FormFactor != 12)
。如果您将该 WMI 查询输入 Google,您会得到相当多的结果,这些结果似乎表明这是一个可靠的测试,但您可能希望先自己做一些测试。它在我的环境中有效,据我所知没有任何错误检测,因此它可能也适用于您的环境。
答案3
我面前有一台笔记本电脑,它在查询 Win32_PortableBattery 时不返回对象,但在查询 Win32_Battery 时返回对象。使用这两个类可能都不是好选择。