Policies aktualisieren

Wenn Sie in DSM mit Paket-Revisionen arbeiten, kommt es immer wieder vor, dass Sie Policies aktualisieren, also die Revision, auf die eine Policy zeigt, auf den Wert der neuen Revision erhöhen müssen. Hierfür müssen in Sie der Eigenschaft AssignedObjectId des zu aktualisierenden Policy-Objekts die ID der neuen Revision eintragen und anschließend über den Aufruf der Update()-Methode diese Änderungen speichern.


Hinweis: Beachten Sie, dass jede neue Revision eines Software Pakets auch eine neue ID erhält (so als wäre sie ein neues Paket).


Das Vorgehen hierfür ist etwas komplex, da das Policy-Update über das zugewiesene Objekt erfolgen muss. Die erforderlichen Schritte sind:

    1. Speichern des Policy-Objekts in einer Variablen
    2. Ermitteln des zugewiesenen Software Paket Objekts über die GetAssignedObject()-Methode und speichern dieses Objekts in einer Variablen
    3. Ermitteln der ID der Revision, auf die die Policy aktualisiert werden soll
    4. Setzen der AssignedObjectId-Eigenschaft auf die ermittelte ID
    5. Aufruf der Update()-Methode unter Übergabe der Methoden-Parameter


Beispiele:


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


Um das zugewiesene Paket einer Policy und die verfügbaren Revisionen zu ermitteln, gehen Sie folgendermaßen vor:


$MyPolicy = Get-EmdbPolicy "emdb:\rootDSE\Managed Users & Computers\solys.local\Adobe Reader 9.0 Rechner" | Where-Object {$_.AssignedObjectName -eq "Adobe Reader 9.0"}

$MyAssignedPackage = $MyPolicy.GetAssignedObject()

$MyAssignedPackage.GetRevisions()


Um die Policy dann zum Beispiel auf Revision 2 des Pakets zu aktualisieren, müssen Sie zunächst die ID der Revision ermitteln:


$MyNewRevisionID = $MyAssignedPackage.GetRevisions() | Where-Object {$_.SoftwareRevision -eq 2} | Select-Object PackageId


Um dann schließlich das Policy-Update durchzuführen. Dabei können Sie - wie in der DSMC - festlegen, ob es sich um ein kritisches Update handelt, und falls ja wie das Update-Verhalten sein soll. Die der Update()-Methode zu übergebenden Parameter sind:


1. Handelt es sich um ein kritisches Update? Mögliche Werte für diesen Parameter sind NonCriticalUpdate und CriticalUpdate

2. Wenn es sich um ein kritisches Update handelt, welche Policy-Instanzen sollen ebenfalls aktualisiert werden? Mögliche Werte sind hier None und All und SamePreviousValue

3. Sollen die aktualisierten Policy-Instanzen deaktiviert werden? Mögliche Werte hier naheliegenderweise True (Policy-Instanzen werden deaktiviert) und False (werden nicht deaktiviert)


Der folgende Code aktualisiert also die oben ermittelte Policy mit der Revision 2 des zugewiesenen Pakets als kritisches Update, bei der alle Policy-Instanzen ebenfalls aktualisiert werden und deaktiviert diese zunächst.


$MyPolicy.AssignedObjectId = $MyNewRevisionID

$MyPolicy.Update("CriticalUpdate", "All", $True)