Ivanti DSM - Patch Management Job Policies mit Powershell überwachen (Report)

Ivanti DSM - Patch Management Job Policies mit Powershell überwachen (Report)

Ivanti DSM verwendet zur Installation von Patch Paketen Job Policies, welche zeit gesteuert nach Sicherheitslücken suchen und auch schließen können. Diese Job Policies können auf einen Fehler laufen. Wenn der Problem weiterhin besteht kann es durchaus vorkommen das auf einzelnen Geräten keine Updates mehr installiert werden. Ebenso kommt es des öfteren vor, dass ein Rechner auf einen Reboot wartet, bevor wieder Updates installiert werden können. Dies sieht man zwar im Kommentar vom der Job Policy Instanz, fällt jedoch in der Regel erst auf wenn man merkt das ein Rechner schon lange keine Updates mehr installiert. Mein Ivanti DSM - Patch Management Powershell Script kann diese Fehler identifizieren und in einem Report zusammenfassen.

Um dieses Problem zu lösen, habe ich ein Powershell Script geschrieben (Benötigt die PSX PowerShell Extensions der Firma NWC-Services) welches eine Excel Übersicht ausgibt. Die Übersicht verdeutlicht um welchen Rechner und um welche Policy es sich handelt. Ebenso zeigt das Script ob die Policy Instanz aktiv ist und ob ein Fehler vorliegt (Inkl. Fehlertext). Das Script erzeigt Ihnen in einem zweiten Arbeitsplatz ein Pivot-Chart.

Voraussetzungen

Um die Excel Datei zu generieren wird ebenso das PowerShell Modul “ImportExcel” von “dfinke” benötigt. Ebenso wird eine Lizensierte Version von (PSX PowerShell Extensions) der Firma NWC-Services benötigt.

Das Script

Ersetzen Sie die Variablen im Params Bereich des Scripts indem Sie den FQDN von Ihrem BLS angeben inkl. Benutzernamen.

#Install-Module ImportExcel
#Connection Options
param
(
  [string]$argServer = 'meinbls.intranet.int:8090',
  #localhost:8090

  [string]$argUser = 'domain\username',
  #domain\username

  [string]$argPassword = 'Password123',
  #Password123

  [string]$context = "emdb:\rootDSE\Managed Users & Computers\*"
)

$subRoutineFlag = 0; #Default = 0 (Change only for debugging)

#Prepare PS to Use HEAT DSM
import-module psx7 -DisableNameChecking

#Create global Authentification
$Server = "\\$argServer";
$Username = $argUser;
$global:path = $context
$password = $argPassword | ConvertTo-SecureString -asPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($Username, $password)

Write-Host "Using context: " + $context

#Connect to HEAT DSM
new-psdrive -name emdb -root $Server -scope script -psprovider blsemdb -Credential $credential
emdb:

$fileName = "C:\temp\" + (Get-Date).Year.ToString() + "_" + (Get-Date).Month.ToString() + "_" + (Get-Date).Day.ToString() + "_"  + (Get-Date).Hour.ToString()+ (Get-Date).Minute.ToString() + (Get-Date).Second.ToString() + "_Jobs.xlsx"

$MyJobPolicys = Get-EmdbPolicy "emdb:\rootDSE\Managed Users & Computers\2\. Computers\Patch-Management-Workstations" -PolicyType "JobPolicy"

$data = @"
Computer,InstallParam,Compliance,isActive,Message
"@

foreach($job in $MyJobPolicys) {
    $instances = $job.GetPolicyInstances();

    foreach($i in $instances) {
        $InstallParam = $i.GetInstallationParameters()[0].Value
        $ComplianceState = $i.ComplianceState
        $isActive = $i.IsActive
        $machine = $i.TargetObjectName
        $msg = $i.LastComment

        Write-Host $machine "-" $msg
        $data += [System.Environment]::NewLine + $machine + "," + $InstallParam + "," + $ComplianceState + "," + $isActive + "," + $msg
    }

}
    $dataList = $data | ConvertFrom-CSV
    $dataList | Export-Excel $fileName -Show -AutoSize -IncludePivotTable -PivotRows Compliance -PivotData @{ Computer = "count" } -IncludePivotChart -ChartType PieExploded3D

#  $computers = Get-EmdbComputer $context -Recurse

Individuelles Powershell Script für Ivanti DSM gewünscht?

Sie brauchen ein individuelles Powershell Script für Ihre Ianti DSM Umgebung? Schauen Sie doch mal in meinen Services-Bereich vorbei. Neben meinem Blog biete ich diverse Dienstleistungen rund ums Programmieren und Consulting an. Gerne können Sie mich auch einfach per E-Mail oder über das Kontaktformular kontaktieren