Überprüfen Sie, ob ein Active Directory-Benutzer mit Get-ADUser vorhanden ist (2023)

Einleitung

In diesem Artikel erläutern wir, wie Sie mithilfe des PowerShell-Cmdlets Get-ADUser überprüfen können, ob ein Benutzer im Active Directory vorhanden ist. Wir werden auf verschiedene Ansätze eingehen und mögliche Fallstricke behandeln.

Verifying an AD User Exists - Fehlerhafter Versuch eins

Sie könnten versucht haben, die Option "-ErrorAction Stop" zu verwenden oder eine "try {} catch {}" -Struktur zu implementieren, um einen Benutzer zu identifizieren, der nicht existiert. Hier ist ein Beispiel:

Import-Module ActiveDirectory
$SamAccountName = 'existiertNicht'

try {
    $User = Get-ADUser -Filter { SamAccountName -eq $SamAccountName } -ErrorAction Stop
}
catch {
    Write-Warning -Message "Benutzer existiert nicht."
}

Leider funktioniert dies nicht wie erwartet. Weder die Warnung noch das Stoppen der Ausführung bei Fehlern wird korrekt ausgeführt. Dies ist eine bekannte Unstimmigkeit in den AD-Cmdlets.

Verifying an AD User Exists - Erfolgreicher Versuch eins

Eine zuverlässige Methode besteht darin, die Ausgabe in ein Array zu zwingen und die Eigenschaft ".Count" zu überprüfen. Hier ein Beispiel:

if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0) {
    Write-Warning -Message "Benutzer $SamAccountName existiert nicht."
}

Dieser Ansatz hat sich als zuverlässig erwiesen.

Verifying an AD User Exists - Erfolgreicher Versuch zwei

Eine weitere Möglichkeit besteht darin, das Ergebnis einfach in einen [bool]-Typ zu überführen und zu überprüfen, ob dieser "true" ist. Beispiel:

$SamAccountName = 'existiertNicht'
[bool] (Get-ADUser -Filter { SamAccountName -eq $SamAccountName }) # gibt "false" zurück

So können Sie in einer "if"-Anweisung überprüfen, ob ein Benutzer existiert.

Neues Verhalten

Seit März 2017 hat sich das Verhalten geändert, insbesondere auf einem Windows Server 2016 AD-Controller. Hier ein Beispiel:

$UserList = @("ExistiertNicht", "TestBenutzer0001")

foreach ($u in $UserList) {
    try {
        $ADUser = Get-ADUser -Identity $u -ErrorAction Stop
    }
    catch {
        if ($_ -like "*Cannot find an object with identity: '$u'*") {
            "Benutzer '$u' existiert nicht."
        }
        else {
            "Ein Fehler ist aufgetreten: $_"
        }
        continue
    }
    "Benutzer '$($ADUser.SamAccountName)' existiert." # Führen Sie Aktionen mit $ADUser durch
}

Dies zeigt, wie Sie jetzt ohne "ErrorAction Stop" überprüfen können.

Fazit

In diesem Artikel haben wir verschiedene Methoden zur Überprüfung der Existenz eines Active Directory-Benutzers mit PowerShell vorgestellt. Wählen Sie die Methode, die am besten zu Ihren Anforderungen passt, und implementieren Sie sie effektiv in Ihren Skripten.

References

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated: 15/10/2023

Views: 6360

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.