WMI-Filter Desktop Notenbook Laptop Server
Aus znilwiki
Die Idee zu den WMI-Filtern stammen aus folgender Quelle: http://woshub.com/sccm-and-wmi-query-to-find-all-laptops-and-desktops/
Vorwort
Ein Kunde benötige WMI-Filter abseits von den üblichen "Nur Windows Server" oder "Nur Windows Workstations", es ging darum eine Gruppenrichtlinie nur auf Client-PC auszuführen, NICHT auf Laptops/Notebooks. Auf der Suche danach findet man den üblichen Tipp nach der Batterie zu fragen. Das klappt auch zuverlässig um Notebooks zu erkennen. Aber eben nicht um Notebooks auszuschließen da es auf Desktops diese WMI-Klasse nicht gibt und die Abfrage somit fehlschlägt.
Die nachfolgenden Filter habe ich auf Kundenanfrage hin erstellt und diese unterliegen folgenden Einschränkungen:
- Sie funktionieren nicht mit virtuellen Maschinen - diese liefern in der Regel nur "Other" (ChassisTypes) oder "'Unspecified" (PCSystemType) zurück. Die Filter hier habe ich so erstellt das diese auf VMs nicht greifen
- Bei jedem Abschnitt ist ein einfacher
wmic
-Aufruf dabei - mit dem Testet Ihr bitte vorher ob der Filter auf euren Systemen funktioniert!
Erstellen der WMI-Filter
Gilt für alle nachfolgenden Regeln:
Öffnet die Gruppenrichtlinienverwaltung und navigiert zu den WMI-Filtern:
Im rechten Bereich könnt Ihr dann per Rechtsklick => Neu einen neuen Filter erstellen:
im Dialog könnt Ihr dann den Namen und die Beschreibung eingeben - und über Hinzufügen den eigentlichen Filter.
Die WMI Filter
Nur Desktops Variante 1: ChassisTypes
Ihr testet diese Abfrage in einer Eingabeaufforderung mit diesem Befehl:
wmic PATH Win32_SystemEnclosure GET ChassisTypes
Beispielausgabe:
{10}
Bedeutung der Werte:
1 = "Sonstige" 2 = "Unbekannt" 3 = "Desktop" 4 = "Low Profile Desktop" 5 = "Pizza-Box" 6 = "Mini-Tower" 7 = "Tower" 8 = "Portable" 9 = "Laptop" 10 = "Notebook" 11 = "Handheld" 12 = "Dockingstation" 13 = "All-in-One" 14 = "Sub-Notebook" 15 = "Space Saving" 16 = "Lunch Box" 17 = "Hauptsystemgehäuse" 18 = "Expansion Chassis" 19 = "Sub-Chassis" 20 = "Bus-Erweiterungschassis" 21 = "Peripheral Chassis" 22 = "Storage Gehäuse" 23 = "Rack Mount Chassis" 24 = "Sealed PC-Fall" alle anderen = "Unbekannt"
Der WMI-Filter dazu:
Name: Nur Desktops ChassisTypes Beschreibung: Abfrage über Win32_SystemEnclosure - ChassisTypes Abfrage: (Namespace: root\CIMv2) select * from Win32_SystemEnclosure where ChassisTypes = "3" or ChassisTypes = "4" or ChassisTypes = "5" or ChassisTypes = "6" or ChassisTypes = "7" or ChassisTypes = "15" or ChassisTypes = "16"
Test der Abfrage in der PowerShell:
gwmi -Query 'select * from Win32_SystemEnclosure where ChassisTypes = "3" or ChassisTypes = "4" or ChassisTypes = "5" or ChassisTypes = "6" or ChassisTypes = "7" or ChassisTypes = "15" or ChassisTypes = "16"'
Nur Desktops Variante 2: PCSystemType
Ihr testet diese Abfrage in einer Eingabeaufforderung mit diesem Befehl:
wmic PATH Win32_Computersystem GET PCSystemType
Beispielausgabe:
2
Bedeutung der Werte:
0 = Unspecified 1 = Desktop 2 = Mobile 3 = Workstation 4 = Enterprise Server 5 = Small Office and Home Office (SOHO) Server 6 = Appliance PC 7 = Performance Server 8 = Maximum
Der WMI-Filter dazu:
Name: Nur Desktops PCSystemType Beschreibung: Abfrage über Win32_ComputerSystem - PCSystemType Abfrage: (Namespace: root\CIMv2) SELECT * FROM Win32_ComputerSystem WHERE PCSystemType = 1
Alternativ: Desktops und Workstations:
SELECT * FROM Win32_ComputerSystem WHERE PCSystemType = 1 OR PCSystemType = 3
Nur Notebooks Variante 1: PCSystemType
Entspricht ansonsten "Desktops Variante 2":
Name: Nur Notebooks PCSystemType Beschreibung: Abfrage über Win32_ComputerSystem - PCSystemType Abfrage: (Namespace: root\CIMv2) SELECT * FROM Win32_ComputerSystem WHERE PCSystemType = 2
Nur Notebooks Variante 2: BatteryStatus
Funktioniert nur bei Notebooks (oder Rechner mit z.B. per USB verbundener USV)
Ihr testet diese Abfrage in einer Eingabeaufforderung mit diesem Befehl:
wmic PATH Win32_Battery GET BatteryStatus
Beispielausgabe:
2
Bedeutung der Werte:
Jeder andere Wert als 0 gibt einen Zustand des Batteriestatus an: 1 = Other (The battery is discharging) 2 = Unknown (The system has access to AC so no battery is being discharged. However, the battery is not necessarily charging) 3 = Fully Charged 4 = Low 5 = Critical 6 = Charging 7 = Charging and High 8 = Charging and Low 9 = Charging and Critical 10 = Undefined 11 = Partially Charged
Der WMI-Filter dazu:
Name: Nur Notebooks BatteryStatus Beschreibung: Abfrage über Win32_Battery - BatteryStatus Abfrage: (Namespace: root\CIMv2) SELECT * FROM Win32_Battery WHERE (BatteryStatus <> 0)
Nur Notebooks Variante 3: ChassisTypes
Entspricht ansonsten "Desktops Variante 1":
Name: Nur Notebooks ChassisTypes Beschreibung: Abfrage über Win32_SystemEnclosure - ChassisTypes Abfrage: (Namespace: root\CIMv2) select * from Win32_SystemEnclosure where ChassisTypes = "8" or ChassisTypes = "9" or ChassisTypes = "10" or ChassisTypes = "11" or ChassisTypes = "12" or ChassisTypes = "14" or ChassisTypes = "18" or ChassisTypes = "21"