У меня есть проблема, когда я хочу использовать объект групповой политики для установки плана электропитания.
Работая над созданием фильтра WMI (с использованием WQL), я столкнулся с проблемой определения набора операторов WQL, которые всегда возвращали true
для настольных компьютеров / серверов и false
для ноутбуков / ноутбуков.
Я начал с тестирования использования win32_systemenclosure
свойство ChassisTypes
, но быстро обнаружил, что ChassisTypes
является int array
, который не может использоваться в (стандартном) WQL [хотя он доступен в наборе расширений SCCM WQL].
Затем я нашел ссылки на использование win32_battery
и проверьте Status
свойство для ненулевого значения; но я быстро понял, что это вернет значение на настольных компьютерах и серверах, к которым ИБП подключен через USB.
Поскольку ни одно из вышеперечисленного не всегда (+/- допустимое N) возвращает true
для настольных компьютеров / серверов и false
для ноутбуков / ноутбуков, я расположен в win32_portablebattery
класс.
Взволнованный, я начал тестирование и быстро заметил, что win32_portablebattery
ничего не возвращает при выполнении на рабочем столе или сервере. Под "ничего" я не имею в виду {empty string}/""
, Я не имею в виду NULL
, и я не имею в виду false
, Я буквально ничего не имею в виду. Я даже пытался проверить __CLASS = ""
и __CLASS IS NULL
и оба все еще возвращаются false
для настольных компьютеров и серверов.
Кто-нибудь знает еще WQL
-фу, чтобы попытаться получить true
результаты с использованием win32_portablebattery
?
Передо мной ноутбук, который не возвращает объект при запросе Win32_PortableBattery, но возвращает объект при запросе Win32_Battery. Вероятно, не лучший вариант для использования любого из этих классов.
Не точный ответ на ваш вопрос, но он может сработать для вас.
Я использую форм-фактор памяти, чтобы определить, является ли что-то ноутбуком. Итак, наш фильтр WMI, который возвращает true
на ноутбуках это:
Select * from Win32_PhysicalMemory where FormFactor = 12
Если вам нужно вернуть false
, (FormFactor != 12)
, конечно. Если вы введете этот WMI-запрос в Google, вы получите изрядное количество результатов, которые, похоже, указывают на то, что это надежный тест, но вы, вероятно, сначала захотите провести некоторое тестирование. Он работает в моей среде без каких-либо неправильных обнаружений, о которых я знаю, так что он может работать и для вас.
Вы можете сделать две вещи.
Если у вас стандартные модели компьютеров, вы можете фильтровать по Win32_ComputerSystem
свойство модели.
Если вы используете настройки групповой политики, вы можете использовать Item Level Targeting
чтобы отфильтровать, к каким пользователям / компьютерам применяется политика, на основе множества факторов. Одно из них Ориентация на портативный компьютер. Вкратце, Windows определит, портативна машина или нет.
Мне лично нравится №2, потому что, если он применяется неправильно, вы всегда можете обвинить Microsoft и сказать пользователю
MS думает, что ваш компьютер должен быть портативным.