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
Kennen Sie DSM-Management-Suite bereits?
Kennen Sie bereits meine Open Source-Erweiterung "DSM-Management-Suite"? Sie können damit beeindruckende Patch-Berichte aus Ihrer Ivanti DSM-Installation erstellen und den Fortschritt Ihrer Patch-Verwaltung verfolgen. Es ist kostenlos ... Warum nicht einen Blick darauf werfen: DSM-Management-Suite