Compliance-Status abrufen

In DSM 2017 ist das Thema Compliance ein sehr zentrales. Grundsätzlich ist man daran interessiert, dass die System compliant sind, also der gewünschte Zustand (auch "desired state" genannt) dem Ist-Zustand ("current state") entspricht.


Innerhalb der DSM Konsole gibt es daher an verschiedenen Stellen die Möglichkeit, den Compliance-Status einzusehen. Dabei wird unterschieden zwischen dem Compliance-State einzelner Policy-Instanzen, dem Compliance-Status von Policies, dem berechneten Gesamtstatus von Computer-Objekten oder auch dem - ebenfalls berechneten - Compliance-Status für Software-Policies, Treiber-Policies oder Patch-Policies.


Mit dem in PSX 4.0 neu eingeführten Cmdlet Get-EmdbComplianceState lassen sich die aktuellen Compliance-Stati dieser Objekte abrufen.


Beispiele:


Hinweis: Voraussetzung für die Beispiele ist ein verbundenes PowerShell-Laufwerk.


Das naheliegendste Beispiel ist sicherlich der Abruf des Compliance-Status einer einzelnen Policy-Instanz. Im folgenden Beispiel wird der Compliance-Status der Zuweisung des Pakets "7-Zip (x64) 16.04" auf eine Gruppe, in der der Computer "WIN10-01" Mitglied ist, abgerufen:


$MyComputer = Get-EmdbComputer "WIN10-01" -Recurse

$MyPolicyInstance = Get-EmdbPolicyInstance -Item $MyComputer | Add-EmdbRelatedItem -Group SoftwarePackages -PassThru | Where-Object {$_.AssignedObjectName -eq "7-Zip (x64) 16.04"}

Get-EmdbComplianceState -PolicyInstance $MyPolicyInstance


Hinweis: im obigen Beispiel wird das Cmdlet Add-EmdbRelatedItem verwendet, um die Performance beim Abruf der assoziierten Software-Pakete, die beim weiteren Abarbeiten der Pipeline gefiltert werden, zu verbessern.


Im nächsten Beispiel wird nun die zu der oben abgerufenen Policy-Instanz die zugehörige Policy ermittelt und deren - berechnete - Compliance-Status Statistik abgerufen. Dabei wird ein Histogramm erzeugt, das die verschiedenen Policy-Instanz Compliance-Stati und deren Anzahl enthält:


$MyPolicy = $MyPolicyInstance.GetPolicy()

Get-EmdbComplianceState -Policy $MyPolicy | ForEach-Object {$.Histogram}


Im nächsten Beispiel soll der Compliance-Status eines Rechners untersucht werden. Wir verwenden dazu wieder den bereits oben betrachteten Computer "WIN10-01". Zunächst betrachten wir die "Letzte ermittelte Compliance", also die Gesamtübersicht über Software-, Patch- und Treiber-Policy-Instanzen:


Get-EmdbComplianceState -Computer $MyComputer


Die betrachteten Daten lassen sich auch auf Software, Patch, Driver einschränken, hier als Beispiel die Compliance der Patch-Zuweisungen:


Get-EmdbComplianceState -Computer $MyComputer -LastCalculatedComplianceScope "Patch"