Ivanti DSM - Alle Patch Policies mit PSX PowerShell Extensions aktivieren

Ivanti DSM - Alle Patch Policies mit PSX PowerShell Extensions aktivieren
Bildrechte: Marco Griep (CC BY-NC-ND) - Geschrieben von: Marco Griep

Ivanti DSM kann mit den Patch-Rollout-Verwaltungsregeln sehr flexibel konfiguriert werden. Die wichtigsten Einstellungen (Verzögerung der Release-Zeit, einschließlich Patch-Kategorien) lassen sich sehr einfach über die DSM-Konsole implementieren.


Solange der Administrator die Patch-Richtlinien automatisch aktiviert, ist dies auch sehr einfach zu verwalten. Es wird kompliziert, wenn:

  • Es gibt mehrere Rollout-Wellen.
  • Verschiedene Standorte oder Kunden, die alle unterschiedliche Genehmigungsfristen benötigen.

Hier sollte der DSM nicht mehr automatisch aktiv Richtlinien erstellen, sondern der Administrator führt dies manuell durch. Abhängig von der Anzahl der Richtlinien kann dies nur mit großen Schwierigkeiten erreicht werden.

Basierend auf diesem Ausgangspunkt ließ Powershell in der Vergangenheit die Patch-Richtlinien aktivieren und den Aktivierungszeitraum auf ein gewünschtes Datum einstellen

Dies kann für jede Gruppe einzeln erfolgen. Das Verhalten des Skripts kann ebenfalls leicht angepasst werden.

Für die Implementierung des PowerShell-Skripts habe ich die PSX PowerShell-Erweiterungen von NWC-Services verwendet.

Passen Sie einfach den Servernamen Ihres BLS im PowerShell-Skript, den Benutzernamen und die ID der Gruppe an, in der sich die Patch-Richtlinien befinden. Diese Zeilen müssen angepasst werden:

$HostAddr = "myBLS.intranet.int:8090"  
$Username = "domain\username"  
$group = Get-EmdbGroup -Id  

Das PowerShell Script

# PSX Add-ins import emdb and connect
import-module psx7 -DisableNameChecking

Write-Host "Please insert Servername and Port (mybls.intranet.int:8090):"
$HostAddr = "myBLS.intranet.int:8090"
$Server = "\\" + $HostAddr

Write-Host "Please insert privileged Username (mydomain\MyUser):"
$Username = "domain\username"

$global:path = "emdb:\rootdse\Managed Users & Computers\2\. Computers\"

new-psdrive -name emdb -root $Server -scope script -psprovider blsemdb -Credential $Username

cd $global:path;

$policyCount = 0;

    $group = Get-EmdbGroup -Id 

    $GroupPolicies = $group.getPolicies()

    foreach ($policy in $GroupPolicies)
    {
        Write-Host "Searching for Patch Policies"
        if ($policy.getType().Name.ToString() -eq "EmdbPatchPolicy")
        {
            if ($policy.IsActive)
            {
                # Do Something
            }
            else
            {
                $policy.AssignedObjectName
                $d = Get-Date "19/02/2018 7:00 AM";
                $policy.ActivationStartDate = $d;
                $policy.Update();
                $policy.ActivateAllInstances;
                $policy.IsActive = $true;
                $policy.Update();
                $policyCount++;
            }
        }
    }

Write-Host $policyCount + " Policies activated";
Read-Host