在构建WMI过滤器(使用WQL)时,我遇到了一个问题,即确定一组WQL语句,这些语句对于台式机/服务器总是返回true,对于笔记本电脑/笔记本电脑则是false.
我开始测试使用win32_systemenclosure属性ChassisTypes,但很快发现ChassisTypes是一个int数组,不能用于(标准)WQL [虽然它可以在SCCM WQL扩展集中使用].
接下来我发现使用win32_battery的引用并检查Status属性是否为非零值;但我很快意识到这将在通过USB连接UPS的台式机和服务器上返回一个值.
由于以上所有内容都不会(/ – 可容忍的N)对于台式机/服务器返回true,而对于笔记本电脑/笔记本电脑来说是假的,因此我在0732 win32_portablebattery类.
兴奋,我开始测试并很快发现win32_portablebattery在对桌面或服务器执行时没有返回任何内容.通过“无”我不是指{empty string} /“”,我不是指NULL,我不是故意的,我的意思是没什么.我甚至试图检查__CLASS =“”和__CLASS IS NULL,并且两者仍然为桌面和服务器返回false.
有没有人知道任何进一步的WQL-fu尝试使用win32_portablebattery获得真正的结果?
>如果您有标准计算机型号,则可以根据Win32_ComputerSystem模型属性进行过滤.
>如果您正在使用组策略首选项,则可以使用项目级别定位来根据无数因素过滤掉策略应用于哪些用户/计算机.其中一个是Portable Computer Targeting.简而言之,Windows将确定机器是否可移植.
我个人喜欢#2,因为如果它被误用,那么你总是责怪微软并告诉用户
MS认为您的计算机应该是便携式的.