Änderungen ausführen

Wenn Sie neue Policies erzeugt oder den Rollout-Status von Policy-Instanzen verändert haben, werden diese Veränderungen beim nächsten Polling des oder der betreffenden Client-Systeme ausgeführt. Aus der DSMC heraus haben Sie jedoch auch die Möglichkeit durch Auswahl der Aktion "Änderungen ausführen" diesen Vorgang zu beschleunigen. Dieselbe Möglichkeit steht Ihnen auch über die PowerShell-Schnittstelle offen.


Beispiele:


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


Seit DSM 2015.1 gibt es die Möglichkeit, die Änderungen an einem Computer direkt über eine dedizierte Schnittstelle auszuführen. Um alle Änderungen für den Rechner XP99 auszuführen, kann folgender PowerShell Code verwendet werden:


$MyComputer = Get-EmdbComputer "XP99" -recurse

Initialize-EmdbFastInstall -Computer $MyComputer -ExecutionContext Auto -IgnoreMaintenanceWindow


Alternativ können Sie für den Computer die Methode ExecuteChanges() aufrufen. Bei Aufruf dieser Methode können Sie das Ignorieren des Wartungszeitfensters und den Ausführungskontext zusätzlich angeben:


$MyComputer = Get-EmdbComputer "XP99" -recurse

$MyComputer.ExecuteChanges($true, "Auto")


Es gibt seit dieser Version aber auch die Möglichkeit, einzelne Policy-Instanzen direkt anzusteuern und ausführen zu lassen. Dazu müssen Sie neben dem Computer die auszuführende Policy-Instanz angeben. Dies ist am einfachsten über die Angabe des durch die Policy-Instanz zugewiesenen Software-Pakets möglich. Der folgende Code zeigt das beispielhaft für die Zuweisung des Softwarepakets "Adobe Reader XI":


$MyComputer = Get-EmdbComputer "XP99" -recurse

$MySoftware = Get-EmdbSoftwarePackage "Adobe Reader XI" -recurse

Initialize-EmdbFastInstall -Computer $MyComputer -Software $MySoftware -ExecutionContext Auto -IgnoreMaintenanceWindow


Wenn Sie noch auf einer älteren DSM-Version sind, müssen Sie wie in der Vergangenheit vorgehen:


Hinweis: Dieses Vorgehen funktioniert ebenfalls noch mit DSM 2015.1 oder höher.


Zunächst ermitteln Sie die ID des Computer-Objekts (im folgenden Beispiel des Rechners "XP99"), für das Sie den Task durchführen wollen. Außerdem legen Sie den Ausführungs-Kontext fest, und ob ein eventuell vorhandenes Wartungszeitfenster ignoriert werden soll. Für den Ausführungs-Kontext können Sie einen der drei Werte "Auto", "User" oder "Service" angeben.


$MyComputerID = $(Get-EmdbComputer "XP99" -recurse).ID

$MyExecutionContext = "Auto"

$IgnoreMaintenanceWindow = $True


Für die Durchführung dieser Aufgabe, benötigt der Business Logic Server ein Objekt vom Typ "FastInstallJob". Dieser Objekttyp hat keine Entsprechung in der Oberfläche der DSMC und muss direkt im Laufwerk der DSM Umgebung erzeugt werden. Sie benötigen daher zunächst ein Objekt, das auf Ihr emdb-Laufwerk referenziert (das im folgenden Beispiel den Namen "emdb" trägt) und legen dann darin ein neues Objekt des entsprechenden Typs an:


$MyEmdbDrive = Get-PSDrive "emdb"

$MyFastInstallJob = $MyEmdbDrive.NewEmdbItem("FastInstallJob")


Die Eigenschaften dieses FastInstallJob-Objektes müssen dann auf die zuvor definierten Werte gesetzt werden:


$MyFastInstallJob.BaseObject.SetPropertyValue("ComputerRelatedJob", "ComputerId", $MyComputerID)

$MyFastInstallJob.BaseObject.SetPropertyValue("FastInstallJob", "ExecutionContext", $MyExecutionContext)

$MyFastInstallJob.BaseObject.SetPropertyValue("FastInstallJob", "IgnoreMaintenanceWindow", $IgnoreMaintenanceWindow)


Schließlich muss der Job noch erzeugt werden, damit er vom BLS abgearbeitet wird:


$MyFastInstallJob.Create()


Anmerkungen:


  • Die Klasse EmdbJob hat eine zusätzliche Eigenschaft CreationState erhalten, die abgefragt werden kann – z.B. $MyFastInstallJob.CreationState | Format-List *
  • Die Umstrukturierung der Eigenschaften betrifft auch andere Job-Typen – z.B. WakeUpOnLanJob, OsdPushJob sowie diverse Citrix-Jobs