Saturday, April 12, 2014

GPOs in der Praxis (2): Gruppenrichtlinien für Anwendungen

Wir schlagen vor, für Anwendungen eigene Gruppenrichtlinien zu erstellen. Dabei kann es erforderlich sein, z.B. für unterschiedliche Office-Versionen (2003, 2007, 2010) auch unterschiedliche Einstellungen vorzunehmen. Für die Abfrage einer bestimmten Anwendung gibt es in WMI-Filtern drei Möglichkeiten:
  • Die Abfrage der installierten Anwendung mit Win32_Product
  • Die Suche nach der ausführbaren Datei mit CIM_DataFile
  • Die Verwendung von GPP Umgebung mit Zielgruppenadressierung in Kombination mit einer WMI-Abfrage von Win32_Environment

Abfragen mit Win32_Product

Von der Verwendung von Win32_Product raten wir ausdrücklich ab. Wir haben bereits gezeigt, wie Sie die Dauer von WMI-Abfragen mit PowerShell ermitteln können. Die Abbildung 10.21 zeigt die Abfrage von Win32_Product auf einem Computer mit Windows 8, auf dem lediglich das Betriebssystem installiert ist, aber keine weiteren Anwendungen.

Abbildung 10.21: Messen der Dauer einer Abfrage von Win32_Product

Die Abfrage von Win32_Product benötigt auf diesem Computer nur 157 Millisekunden.

Die Abbildung 10.22 zeigt das Ergebnis der gleichen Abfrage auf einem anderen Computer mit Windows 7, auf dem eine praxisnahe Anzahl von Anwendungen installiert ist.

Abbildung 10.22: Lange Dauer der Abfrage von Win32_Product

Die Abfrage von Win32_Product benötigt hier mehr als 16 Sekunden. Wenn mehrere Gruppenrichtlinien mit WMI-Filtern verknüpft sind, addieren sich die Zeiten der einzelnen WMI-Filter. So können sich bei Verwendung von Win32_Product schnell Wartezeiten von mehreren Minuten für die Auswertung der WMI-Filter ergeben. Das gilt es unbedingt zu vermeiden!
Die Klasse Win32_Product ist nicht für Geschwindigkeit optimiert. Abhängig von der Anzahl der installierten Anwendungen kann eine Abfrage von Win32_Product mehrere Minuten benötigen. Die Auswertung der entsprechenden WMI-Filter verzögert den Start des Computers und die Anmeldung des Benutzers entsprechend.
Ab Windows Vista SP2 und Windows 7 SP1 gibt es eine Sicherheitsfunktion in der Auswertung von WMI-Filtern, die nach 30 Sekunden aktiv wird, wenn die WMI-Abfrage noch kein Ergebnis geliefert hat. Die WMI-Abfrage wird dann abgebrochen und der WMI-Filter als falsch ausgewertet.

Abfragen mit CIM_DataFile

Die Abfrage mit CIM_DataFile ist gegenüber Win32_Product sehr schnell, allerdings muss der genaue Pfad der ausführbaren Datei bekannt sein, und Umgebungsvariablen wie z.B. %ProgramFiles% können nicht verwendet werden.

Abbildung 10.23: WMI-Abfrage für Internet Explorer 10 mit CIM_DataFile

Zielgruppenadressierung und WMI-Filter

Die aus unserer Sicht eleganteste und flexibelste Möglichkeit zur Abfrage von Anwendungen ist die Kombination von zwei Techniken: Zunächst verwenden wir die Zielgruppenadressierung von Group Policy Preferences, um die Anwendung zu ermitteln. Abhängig vom Ergebnis erstellen wir eine Umgebungsvariable. Diese Umgebungsvariable verwenden wir in einem WMI-Filter für die jeweilige Anwendung. Die folgenden Abbildungen zeigen dieses Vorgehen beispielhaft für Microsoft Office 2010 und Office 2003. Für andere Anwendungen können Sie das gleiche Vorgehen verwenden, und alle Umgebungsvariablen, die Sie für die Identifikation von Anwendungen und Anwendungsversionen benötigen, können Sie in einer einzigen Gruppenrichtlinie zusammenfassen.

Abbildung 10.24: Erstellen einer Umgebungsvariablen für die Erkennung von Microsoft Office

Die hier als Wert verwendete Umgebungsvariable %OfficeVersion% existiert noch nicht. Sie wird erst mit Hilfe der Zielgruppenadressierung auf der Registerkarte »Gemeinsame Optionen« erstellt. Hier legen wir auch fest, dass die Variable gelöscht werden soll, wenn die Zielgruppenadressierung kein Ergebnis liefert (Option Element entfernen, wenn es nicht mehr angewendet wird).

Abbildung 10.25: Gemeinsame Optionen

Die Zielgruppenadressierung stellt für die Abfrage von Anwendungen das Element MSI-Abfrage bereit, mit dem nicht nur das Vorhandensein von Anwendungen geprüft werden kann, sondern auch Eigenschaften der Anwendung abgerufen werden können. Wir fragen die Hauptversion (Informationselementname VersionMajor) von MS Office ab und speichern diese in der Variable %OfficeVersion%, die wir dann als Wert in die Umgebungsvariable %MSOFFICEVERISON% schreiben.
Variablen, die innerhalb der Zielgruppenadressierung verwendet werden, existieren nur temporär. Die Variable %OfficeVersion% im Beispiel kann daher nicht außerhalb der Gruppenrichtlinie verwendet werden.




Abbildung 10.26: Zielgruppenadressierung und Abfrage der Office-Version

Mehrere Office-Versionen gleichzeitig auf einem Computer sind i.d.R nicht installiert. Die Zielgruppenadressierung liefert also trotz der Oder-Verknüpfung der Elemente ein eindeutiges Ergebnis. Im Beispiel wird Office 2010 Professional oder Office 2003 Professional gefunden. Die Variable %OfficeVersion% enthält dann entweder 14 oder 11. Wird keine Office-Version gefunden, wird die Umgebungsvariable %MSOFFICEVERSION% gelöscht.
Die für MSI-Abfragen erforderlichen Produktcodes können über die Durchsuchen-Schaltfläche ermittelt werden, wenn die Anwendung auf dem aktuellen Computer für den aktuellen Benutzer installiert ist. Alternativ können Sie folgende Befehle verwenden:
  • In der Eingabeaufforderung:wmic product where (name like "%office%") get name, identifyingnumber, version
  • In PowerShell:Get-WmiObject –Class Win32_Product –Filter "name like '%office%'" | Format-List –Property Name, IdentifyingNumber, Version
Über den Namen kann das jeweilige Office-Produkt identifiziert und der zugehörige Produktcode (Eigenschaft IdentifyingNumber) in das Eingabefeld übernommen werden.
Statt der MSI-Abfrage können Sie natürlich auch die Dateiübereinstimmung verwenden. Hier haben Sie aber nicht die Möglichkeit, bestimmte Informationen in einer Variablen zu speichern und diese als Inhalt der Umgebungsvariablen festzulegen. Sie müssen dann also für jede Übereinstimmung eine eigene Umgebungsvariable mit passendem Inhalt definieren.
 
Für die Umgebungsvariable %MSOFFICEVERSION% erstellen wir einen WMI-Filter, der den Namen der Variablen und den Inhalt abfragt. Für Office 2010 verwenden wir dabei folgende Abfrage:

Abbildung 10.27: WMI-Abfrage für die Office-Version 14

Der einzige Nachteil dieser Vorgehensweise ist, dass der WMI-Filter erst bei der zweiten Gruppenrichtlinien-Verarbeitung wahr werden kann, da bei der ersten Verarbeitung die Umgebungsvariable erstellt wird, nachdem WMI-Filter bereits ausgewertet wurden. Auch nach Produktaktualisierungen sind zwei Gruppenrichtlinien-Verarbeitungen erforderlich.

Diesen Nachteil können Sie vermeiden, wenn Sie folgenden Trick anwenden:
  • Die Umgebungsvariable mit der Zielgruppenadressierung wird unter Computerkonfiguration erstellt
  • Die Anwendungskonfiguration wird mit Benutzereinstellungen durchgeführt
Da beim Starten und bei der Anmeldung zuerst Gruppenrichtlinien für den Computer verarbeitet werden, existiert die Umgebungsvariable dann bereits, wenn später Gruppenrichtlinien für den Benutzer verarbeitet werden.

Hinweis: Dieser Blogbeitrag ist ein Auszug aus dem Buch »Windows Server 2012 R2 - Gruppenrichtlinien«, erschienen bei Microsoft Press. 

Druck-ISBN 978-3-86645-695-2
PDF-ISBN    978-3-8483-3067-6
EPUB-ISBN  978-3-8483-0226-0
MOBI-ISBN  978-3-8483-1203-0

Wer mehr lesen möchte, dem empfehle ich, sich dieses Buch zuzulegen – es gibt in deutscher Sprache kein besseres Referenzwerk.

Das Buch kann in allen Buchläden und –shops erworben werden, z.B. bei Amazon oder Thalia. (C) 2014 O'Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln.