PowerShell: Betriebssysteme inventarisieren und zählen

Sicher hat schon ein Jeder von euch mindestens einmal die Anforderung gehabt, die Anzahl der im Einsatz befindlichen Betriebssysteme in der eigenen IT-Landschaft zu zählen. Sofern die entsprechenden Systeme ein Computer-Account im Active Directory anlegen und das Attribut „operatingSystem“ pflegen, ist dies relativ einfach möglich.

Folgendes PowerShell-Skript zeigt auf, wie diese Anforderung schnell und simpel erfüllt werden kann. Wichtig, das Active Directory PowerShell Modul muss zuvor geladen werden, damit die Funktion Get-ADComputer interpretiert werden kann. Alternativ kann dieses Skript auch direkt auf einem Windows Domain Controller ausgeführt werden.

#Funktion um die Werte des Arrays auf Duplikate zu prüfen und aufzulisten
Function Get-Duplicate {
    param($OSCountArray, [switch]$count)
    begin {
        $OSHash = @{}
    }
    process {
        $OSCountArray | %{ $OSHash[$_] = $OSHash[$_] + 1 }
        if($count) {
            $OSHash.GetEnumerator() | ?{$_.value -gt 1} | %{
                New-Object PSObject -Property @{
                    Betriebssystem = $_.key
                    Anzahl = $_.value
                }
            }
        }
        else {
            $OSHash.GetEnumerator() | ?{$_.value -gt 1} | %{$_.key}
        }    
    }
}

#Array erstellen, zusammenfassen und formatieren
$ADOSCollection = @(

#Auslesen der nicht deaktivierten Computer-Accounts aus der Verzeichnisstruktur
$ADOperatinSystems = (Get-ADComputer -Properties * -Filter 'Enabled -eq $true' | Select OperatingSystem)

    ForEach ($OSEntry in $ADOperatinSystems) {
        
        $OS = $OSEntry.OperatingSystem
		
		#Nur Werte ungleich NULL übernehmen
        if ($OS -ne $null) {
        echo $OS
        }

    }

)

#Anwendung der Funktion Get-Duplicate
Get-Duplicate $ADOSCollection -count

Ich empfehle das Ausführen über die PowerShell ISE, da das Ergebnis ersichtlich bleibt. Die Ausgabe sieht dann in etwa wie folgt aus:

Viel Freude damit und ein schönes Wochenende wünscht IT-Feed!

Leon Gawinski

System Engineer Softwarebereich Microsoft

Empfohlene Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Schaltfläche "Zurück zum Anfang"