Назад | Перейти на главную страницу

проверка отсутствующих значений в WQL или (фильтр WQL / WMI для возврата «истина» для настольных компьютеров / серверов, но «ложь» для ноутбуков)

У меня есть проблема, когда я хочу использовать объект групповой политики для установки плана электропитания.

Работая над созданием фильтра 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, вы получите изрядное количество результатов, которые, похоже, указывают на то, что это надежный тест, но вы, вероятно, сначала захотите провести некоторое тестирование. Он работает в моей среде без каких-либо неправильных обнаружений, о которых я знаю, так что он может работать и для вас.

Вы можете сделать две вещи.

  1. Если у вас стандартные модели компьютеров, вы можете фильтровать по Win32_ComputerSystem свойство модели.

  2. Если вы используете настройки групповой политики, вы можете использовать Item Level Targeting чтобы отфильтровать, к каким пользователям / компьютерам применяется политика, на основе множества факторов. Одно из них Ориентация на портативный компьютер. Вкратце, Windows определит, портативна машина или нет.

Мне лично нравится №2, потому что, если он применяется неправильно, вы всегда можете обвинить Microsoft и сказать пользователю

MS думает, что ваш компьютер должен быть портативным.