Veröffentlicht:

Ivanti DSM - Überwachen von Patch-Management-Jobrichtlinien mit Powershell

.

Ivanti DSM - Überwachen von Patch-Management-Jobrichtlinien mit Powershell Photo by Markus Spiske / Unsplash

Geschrieben von



Ivanti DSM verwendet Jobrichtlinien, um Patch-Pakete zu installieren, mit denen zeitgesteuert nach Sicherheitslücken gesucht und diese geschlossen werden können. Diese Jobrichtlinien können auf einen Fehler stoßen. Wenn das Problem weiterhin besteht, werden möglicherweise keine Updates mehr auf einzelnen Geräten installiert. Ebenso kommt es häufig vor, dass ein Computer auf einen Neustart wartet, bevor Updates erneut installiert werden können. Dies ist im Kommentar der Jobrichtlinieninstanz zu sehen, wird jedoch normalerweise erst bemerkt, wenn Sie feststellen, dass ein Computer lange Zeit keine Updates installiert hat. Mein Ivanti DSM - Patch Management Powershell-Skript kann diese Fehler identifizieren und in einem Bericht zusammenfassen.

Um dieses Problem zu lösen, habe ich ein Powershell-Skript geschrieben (erfordert die PSX PowerShell-Erweiterungen der Firma NWC-Services), das einen Excel-Überblick bietet. Die Übersicht zeigt, welcher Computer und welche Richtlinie es ist. Das Skript zeigt auch an, ob die Richtlinieninstanz aktiv ist und ob ein Fehler vorliegt (einschließlich Fehlertext). Das Skript zeigt Ihnen ein Pivot-Diagramm in einer zweiten Workstation.

Voraussetzungen

Das PowerShell-Modul "ImportExcel" von "dfinke" wird auch benötigt, um die Excel-Datei zu generieren. Eine lizenzierte Version von (PSX PowerShell Extensions) von NWC-Services ist ebenfalls erforderlich.

Das PowerShell Script

Ersetzen Sie die Variablen im Bereich Params des Skripts, indem Sie den vollqualifizierten Domänennamen Ihres BLS einschließlich des Benutzernamens angeben.

    #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

Remove-PSDrive -Name emdb

Kommentare