Ivanti DSM – Patch Status to Excel Tool (Inkl. PivotCharts)

ivanti-dsm-patch-status-to-excel-tool-inkl-pivotcharts

Vermissen Sie in Ivanti DSM auch eine Option Ihre Patch-Übersicht sinnvoll zu organisieren? Sie können zwar auf jedem Client einen CSV Export der Patch Policies machen, das ist bei 1000 Clients jedoch nicht mehr manuell realisierbar, noch praktikabel. Wer die Powershell Extensions der Firma „NWC-Services“ nutzt, kann mit einem Powershell Script eine Patch-Übersicht erzeugen, die Daten in Excel konvertieren lassen und sich sogar schöne Pivot-Charts generieren lassen. Mit meinem Ivanti DSM – Patch Status to Excel Tool (bzw. Script) können Sie dies sehr einfach erledigen.

Werbung

Wie funktioniert das Ivanti DSM – Patch Status Script?

Installieren Sie bitte das Powershell Modul „Import-Excel“ von „dfinke“: Link

Install-Module ImportExcel

Das Script verbindet sich mit dem BLS und liest alle Informationen für Sie aus und konvertiert die Daten danach in Excel. Daraufhin erstellt das Script zusätzlich PivotCharts. Sie müssen dem Script lediglich die Verbindungsinformationen mitgeben:

 DSMPatchesExcelExport.ps1 -argServer "localhost:8090" -argUser "domain\username" -argPassword "Password123" "username" -context "emdb:\rootDSE\Managed Users & Computers\*" 

Das Script

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

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

	[string]$argPassword = '',
	#Password123

	[string]$loggedInUser = '',
	#Optional for Logging

	[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:

$data = @"
Computer,Patch,Compliance,FoundDate,FixDate
"@

$contextTokens = $context.Split('\\')

$token = $contextTokens[$contextTokens.Length-2].Replace('&','').Replace(' ','_').Replace('(','').Replace(')','').Replace('.','')

Write-Host $token

$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() + "_" + $token +".xlsx"

Write-Host $fileName

if ($subRoutineFlag -eq 0)
{
	$computers = Get-EmdbComputer $context -Recurse
	#$computers.GetType()
	
	foreach ($machine in $computers)
	{
		$issues = Get-EmdbComputer $context -Name $machine.Name -Recurse | ForEach-Object { $_.GetAssociations("ComputerMissingPatch") } | Add-EmdbRelatedItem -PassThru
		
		foreach ($secIssue in $issues)
		{
			Write-Host $secIssue.GetTargetObject().Name " - " $secIssue.Status
			$data += [System.Environment]::NewLine + $machine.Name + "," + $secIssue.GetTargetObject().Name.Replace(',',' ') + "," + $secIssue.Status + "," + $secIssue.DetectDate + "," + $secIssue.FixDate
			
		}
	}
	$dataList = $data | ConvertFrom-CSV
	
	$dataList | Export-Excel $fileName -Show -AutoSize -IncludePivotTable -PivotRows Compliance -PivotData @{ Computer = "count" } -IncludePivotChart -ChartType PieExploded3D
	
	$subRoutineFlag = 1;
}

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

Sie brauchen ein individuelles Powershell Script für Ihre 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 kontaktieren: griepmarco@protonmail.com oder über das Kontaktformular

Kommentar verfassen