Powershell Quick-Tip: AD-User ohne ActiveDirectory Modul deaktivieren
Die Powershell ist für viele Bereiche sehr hilfreich und macht einem Administrator das Leben deutlich leichter. Da man allerdings nicht immer alle Module auf dem aktuellen PC installiert hat, die man gerne verwenden möchte, muss man sich auch alternative Wege anschauen. Im Folgenden werden wir einen Benutzer deaktivieren ohne den Befehl Disable-ADAccount zu verwenden, da dieser nur mit dem Modul ActiveDirectory verfügbar ist.
LDAP - die Sprache des ADs
Wenn die Powershell-Befehle für das AD nicht mehr verfügbar sind, muss man auf die eigentliche Sprache des ADs zurückgreifen.
Um einen Benutzer mit der EMailadresse Max.Muster@test.de aus dem AD als LDAP-Objekt auszulesen, benötigen wir folgende Befehle:
$Searcher = New-Object DirectoryServices.DirectorySearcher $Searcher.Filter = "(mailNickname=Max.Muster)" $Searcher.SearchRoot = "LDAP://DC=test,DC=de" $LDAP_Path = $Searcher.FindOne().Path $LDAP_User_Object = [adsi] $LDAP_Path
Hierbei verwenden wir die Methode FindOne(). Diese Gibt den ersten Treffer der Suche aus. Da es nur einen Benutzer mit der EMailadresse geben sollte, haben wir hiermit auch den richtigen Benutzer ausgewählt.
Deaktivieren eines Benutzers
Ob ein Benutzer deaktiviert ist oder nicht, erkennt man an seinem Attribut userAccountControl. genauer gesagt an der letzten Hex-Stelle des Attributs. 0x2 steht dafür, dass der User deaktiviert wurde, alle anderen Werte bedeuten, dass er aktiv ist.
Um den User nun also zu deaktivieren, muss man ein binäres OR mit dem aktuellen Wert und 0x2 durchführen.
Dies geht wie folgt:
$DisableValue = ($LDAP_User_Object.userAccountControl.Value -bor 0x2) $LDAP_User_Object.Put("userAccountControl",$DisableValue)
Schreiben der Änderungen
Aktuell haben wir alle Änderungen an unserer lokalen Kopie des LDAP-Objekts gemacht. Um die Änderungen in das AD zu übernehmen, müssen wir nun noch folgenden Befehl ausführen:
$LDAP_User_Object.SetInfo()
- ASP.NET 1
- Active Directory 41
- Administration Tools 1
- Allgemein 60
- Backup 4
- ChatBots 5
- Configuration Manager 3
- DNS 1
- Data Protection Manager 1
- Deployment 24
- Endpoint Protection 1
- Exchange Server 62
- Gruppenrichtlinien 4
- Hyper-V 18
- Intune 1
- Konferenz 1
- Künstliche Intelligenz 7
- Linux 3
- Microsoft Office 11
- Microsoft Teams 1
- Office 365 11
- Office Web App Server 1
- Powershell 21
- Remote Desktop Server 1
- Remote Server 1
- SQL Server 8
- Sharepoint Server 12
- Sicherheit 1
- System Center 10
- Training 1
- Verschlüsselung 2
- Virtual Machine Manager 1
- Visual Studio 1
- WSUS 7
- Windows 10 12
- Windows 8 9
- Windows Azure 4
- Windows Client 1
- Windows Server 24
- Windows Server 2012 7
- Windows Server 2012R2 15
- Windows Server 2016 7
- Windows Server 2019 2
- Windows Server 2022 1
- Zertifikate 4