Ich habe vor Kurzem an einem Kundenprojekt gearbeitet, bei dem ich rund um Active Directory Computer einiges machen musste. Ich habe PowerShell und etwas leichtes Filtern und Verarbeiten verwendet. Diese Beispiele teile ich jetzt hier und hoffentlich findet sie jemand interessant oder hilfreich. Vielleicht werde ich sie auch zukĂĽnftig interessant finden - in dem Fall: Moin Andi! đź‘‹

Beispiel 1: Computer nach Betriebssystemversion filtern

Das AD-Attribut OperatingSystemVersion enthält die OS-Version inklusive Buildnummer in einem Format wie diesem: 10.0 (19041)

Ich habe einige ältere Geräte finden mĂĽssen, aber ein Vergleich mit einem “kleiner als”-Operator gegen den Attributwert war nicht möglich. Deshalb habe ich mit dem Operator -match und einem regulären Ausdruck nur die eigentliche Buildnummer in den Klammern extrahiert. Wenn der RegEx gepasst hat, ist das extrahierte Ergebnis in der automatischen Variable $Matches gelandet.

Danach habe ich die Buildnummer schlieĂźlich mit dem “kleiner als”-Operator (-lt) vergleichen können. Wenn das Gerät eine ältere Buildversion als 19042 verwendet hat, habe ich den Computer einer bestimmten Sicherheitsgruppe hinzugefĂĽgt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ADComputers = Get-ADComputer -Filter * -Properties OperatingSystemVersion

foreach($ADComputer in $ADComputers) {
    if($ADComputer.OperatingSystemVersion -match "\d+\.\d? \((\d+)\)") {
        if($Matches[1] -lt 19042) {
            Add-ADGroupMember -Identity "My-Group-with-old-devices" -Members $ADComputer.DistinguishedName
            $ADComputer.Name # just outputting this, so I know where I'm currently at
        }
    }
}

Beispiel 2: Nur Windows-Client-Computer abrufen

Da der Kunde auch Windows Server und andere Nicht-Windows-Geräte im AD gehabt hat, habe ich den folgenden Code verwendet, um nur Windows-Clients abzurufen:

1
$ADComputers = Get-ADComputer -Filter "OperatingSystem -notlike '*Server*' -and OperatingSystem -like '*Windows*'" -Properties OperatingSystemVersion,OperatingSystem

Beispiel 3: Alle Computer auflisten, die nicht von Intune verwaltet wurden

Ich habe außerdem vergleichen wollen, welche Geräte aus dem AD nicht über Microsoft Intune verwaltet wurden. Ich habe über das Intune Admin Center eine Liste der Windows-Geräte aus Intune exportiert.

Export Windows Devices list via Intune in CSV format

Danach habe ich die Liste (CSV-Format) in PowerShell importiert und sie mit einer Liste von AD-Computern über den Operator -notin verglichen. Alle Geräte, die dann zurückgegeben wurden, waren nicht in Intune, sondern nur im Active Directory.

1
2
3
4
5
6
7
$IntuneDevices = Import-Csv IntuneExportDownloadedFromThePortal.csv
$NonIntuneDevices = foreach($ADComputer in $ADComputers) {
    if($ADComputer.Name -notin $IntuneDevices."Device name") {
        $ADComputer | Select-Object -Property Name,Enabled,OperatingSystem,OperatingSystemVersion
    }
}
$NonIntuneDevices | Export-Csv -Path .\NonIntuneDevices.csv -NoTypeInformation -Encoding utf8