Archives for

WMI-Filterung in Gruppenrichtlinie anwenden

Die Zuweisung von Gruppenrichtlinien lässt sich nicht nur auf Benutzer-, Computer- oder Gruppenebene vornehmen, sondern auch über WMI-Abfragen filtern.

Angenommen eine neue Software soll nicht auf allen Computern im Unternehmen installiert werden, sondern ausschließlich auf Windows 7 Clients. Man könnte entweder hergehen und alle Windows 7 Rechner in einer Gruppe zusammenfassen und eine Softwareinstallations-Gruppenrichtlinie dieser Gruppe zuweisen, oder man weist die GPO im ersten Schritt allen Rechnern zu und filtert im zweiten Schritt per WMI nur die Windows 7 Clients heraus.

Im folgenden Beispiel sollen DameWare-Agenten Settings an Unternehmensrechner verteilt werden, aber nur an die Rechner, auf denen der Agent installiert ist.

Hierzu erstellen wir in der Gruppenrichtlinienverwaltung unter > Gesamtstruktur > Domänen > Domäne > WMI-Filter eine neue WMI-Abfrage:

Diese nennen wir “DameWare Agent Settings” und hinterlegen die folgenden Einstellungen:

Die WMI-Abfrage prüft ob der Dienst des DameWare-Agenten (name=’dwmrcs’) auf dem Zielsystem läuft (state=’Running’). Läuft der Dienst, während die Gruppenrichtlinie verarbeitet wird, werden die damit verbundenen GPO-Einstellungen angewandt. Sollte der Dienst nicht installiert sein, bzw. nicht laufen, wird die Gruppenrichtlinie herausgefiltert. Auszug aus ‘gpresult’ auf einem Zielsystem:

Weitere WMI-Abfragemöglichkeiten habe ich in meinem Post “Häufige WMI-Abfragen” aufgeführt.

Nach der Erstellung des WMI-Filters kann dieser nun in den Einstellungen der Gruppenrichtlinie (über die die DameWare-Agenten Einstellungen verteilt werden) ausgewählt werden:

 

Read More

Häufige WMI-Abfragen

Hier ein paar typische WMI-Abfragen, z.B. anzuwenden in der WMI-Filterung für Gruppenrichtlinien oder bei der Konfiguration von BGInfo. Kommentare und Erläuterungen in [eckigen Klammern] hinter den jeweiligen Abfragen.

Akku-Status (Notebook)
SELECT * FROM Win32_Battery WHERE EstimatedChargeRemaining > ’20′  [Restladekapazität >20%]
SELECT EstimatedChargeRemaining FROM Win32_Battery

Datum
SELECT Day AND Month AND Year FROM Win32_CurrentTime
SELECT DayOfWeek FROM Win32_CurrentTime

Bildschirm
SELECT ScreenWidth FROM Win32_DesktopMonitor
SELECT ScreenHeight FROM Win32_DesktopMonitor
SELECT SystemName FROM Win32_DesktopMonitor WHERE ScreenWidth = 1024 AND ScreenHeight = 768  [alle Systeme mit einer Auflösung von 1024x768]
SELECT * FROM Win32_DesktopMonitor WHERE ScreenHeight = 768
SELECT * FROM Win32_DesktopMonitor WHERE ScreenWidth = 1024
SELECT SystemName FROM Win32_DesktopMonitor WHERE DeviceID = ‘DesktopMonitor1′ AND ScreenWidth > 800 AND ScreenHeight > 600  [ggf. DesktopMonitor2 bei weiteren Bildschirmen]

Routingtabelle
SELECT NextHop FROM Win32_IP4RouteTable  [Abfrage des Gateways]
SELECT Metric1 FROM Win32_IP4RouteTable WHERE NextHop = ’192.168.1.1′  [Abfrage der hinterlegten Metrik zum Gateway]
SELECT Destination FROM Win32_IP4PersistedRouteTable  [Fest eingetragene Netzwerke]

Laufwerke
SELECT FileSystem FROM Win32_LogicalDisk

Arbeitsspeicher
SELECT EndingAddress FROM Win32_MemoryDevice  [Verfügbarer RAM in KB]
SELECT Capacity FROM Win32_PhysicalMemory  [Verfügbarer RAM in B]
SELECT MaxCapacity FROM Win32_PhysicalMemoryArray  [Maximal steckbarer RAM in KB]

Netzwerkkarten
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPenabled = TRUE
SELECT DefaultIPGateway FROM Win32_NetworkAdapterConfiguration WHERE IPenabled = TRUE
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPenabled = TRUE AND DHCPEnabled = TRUE
SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPenabled = TRUE

NT Profil
SELECT FullName FROM Win32_NetworkLoginProfile WHERE UserType = ‘Normal Account’
oder
SELECT * FROM Win32_NetworkLoginProfile WHERE FullName IS NOT NULL

Domäne / Domain Controller
SELECT * FROM Win32_NTDomain WHERE DomainControllerAddressType IS NOT NULL
SELECT ClientSiteName FROM Win32_NTDomain WHERE ClientSiteName IS NOT NULL
SELECT DcSiteName FROM Win32_NTDomain WHERE DcSiteName IS NOT NULL
SELECT DnsForestname FROM Win32_NTDomain WHERE DnsForestName IS NOT NULL  [Domain Suffix]
SELECT DomainControllerAddress FROM Win32_NTDomain WHERE DomainControllerAddress IS NOT NULL
SELECT DomainControllerName FROM Win32_NTDomain WHERE DomainControllerName IS NOT NULL
SELECT DomainName FROM Win32_NTDomain WHERE DomainName IS NOT NULL  [Domänen-NetBIOS Name]

Betriebssystem
SELECT Caption FROM Win32_OperatingSystem  [OS Anzeigename]
SELECT * FROM Win32_OperatingSystem WHERE Version > ’6.0′  [Alle Windowssysteme mit einer OS-Version > 6.0]
SELECT BuildNumber FROM Win32_OperatingSystem
SELECT * FROM Win32_OperatingSystem WHERE OSArchitecture = ’64-Bit’ [Alle 64bit Systeme]

Festplatte
SELECT SerialNumber FROM Win32_PhysicalMedia  [Seriennummer der Festplatten]

Drucker
SELECT * FROM Win32_Printer WHERE DriverName = ‘Druckerfreigabename’

Prozessor
SELECT AddressWidth FROM Win32_Processor  [= 32 or 64 bit]
SELECT Name FROM Win32_Processor

Dienste
SELECT * FROM Win32_Service WHERE State = ‘Running’  [Alle Dienste im Status 'Gestartet']
SELECT * FROM Win32_Service WHERE Name = ‘Dnscache’  [DNS-Client Dienst]

Read More

WMI-Abfragen per PowerShell

Die im vorherigen Post gezeigten WMI-Abfragen lassen sich ebenfalls in die PowerShell übernehmen, allerdings mit leicht veränderter Syntax.

Abfragemöglichkeit 1
Übernahme der bekannten WMI-Query in den PowerShell-Befehl:

Get-WmiObject -Query “SELECT Name FROM Win32_Processor”

Abfragemöglichkeit 2

Abfrage aller Prozessor-Informationen über den “neuen” PowerShell-Befehl:

Get-WmiObject Win32_Processor

Abfragemöglichkeit 3:
Abfrage aller Prozessor-Informationen mit anschließender Formatierung der Darstellung (Format List – fl) und Filterung nach “Name”:

Get-WmiObject Win32_Processor | fl Name

Abfragemöglichkeit 4:
Enthält die ursprüngliche Abfrage einen Filter (WHERE), kann dies ebenfalls in PowerShell abgebildet werden:

Get-WmiObject Win32_Processor -Filter “AddressWidth = ’64′ AND
Manufacturer = ‘GenuineIntel’” | fl Name

 

Read More

WMI Operatoren

Operator Beschreibung
= Gleich
< Kleiner als
> Größer als
<= Kleiner gleich
>= Größer gleich
!= oder <> Nicht gleich
Weitere Operatoren:
IS, ISNOT (beide nur bei Konstante NULL)
LIKE

Quelle

Read More