Bents Blog

 

Ein IT Blog mit Themen aus dem Windows Server Umfeld.

PowerShell: Benutzer-Eigenschaften im Active Directory auslesen oder ändern

Oftmals kommt es vor, dass man als Administrator verschiedenste Eigenschaften mehrerer Benutzer im Active Directory anzeigen lassen möchte, ohne – auf umständliche Weise – jeden Benutzer einzeln auszuwählen und über dessen Eigenschaften auf mehrere Reitern nach der gewünschten Information zu suchen.

Doch nicht nur die Suche, auch die Änderung mehrerer Eigenschaften, die für viele oder alle Benutzer identisch sein sollen, ist über die manuelle Eingabe extrem aufwendig. Befinden sich die Benutzer dann noch geordnet in unterschiedlichen Organisationseinheiten (OU), ist die Administration mit Hilfe der MMC Active Directory-Benutzer und Computer nahezu unbrauchbar.

Umsetzung

Abhilfe schafft hier der Einsatz der Windows PowerShell. Bevor diese für die oben angesprochenen Aufgaben verwendet werden kann, muss nach dem Start der PowerShell zunächst das Modul für die Active-Directory Befehle geladen werden:

Import-Module ActiveDirectory

Danach stehen die folgenden Befehle für die beschriebenen Zwecke zur Verfügung.

Auslesen von Benutzer-Eigenschaften

Um nun bestimmte Eigenschaften von Benutzern innerhalb einer Domäne, oder in einer darin befindlichen OU anzuzeigen, verwendet man folgenden PowerShell-Befehl (im diesem Beispiel das Home-Verzeichnis und den Profil-Pfad):

Get-ADUser -Filter {name -like „*“} -SearchBase „OU=[Organisationseinheit],DC=[Domäne],DC=[TLD]“ -Properties HomeDirectory,ProfilePath

Die Option -Filter gilt für alle Benutzer, der Schalter -SearchBase zeigt auf die Stelle im Active Directory an der gesucht werden soll und mit -Properties werden die relevanten Eigenschaften ausgewählt.

Die vollständige Liste aller Eigenschaften eines Benutzers die via -Properties ausgewählt werden können, erhält man mit dem folgenden Befehl:

Get-ADUser -Identity [Benutzername] -Properties * | fl

Um die vorherige Liste gleich zur Weiterverarbeitung oder Auswertung verwenden zu können, bietet sich der Export in eine CSV-Datei an, die anschließend in Microsoft Excel formatiert werden kann:

Get-ADUser -Filter {name -like „*“} -SearchBase „OU=[Organisationseinheit],DC=[Domäne],DC=[TLD]“ -Properties HomeDirectory,ProfilePath | Export-Csv [Pfad und Dateiname]

Eine weitere Funktion interessante Funtkion ist die grafische Ausgabe bzw. Darstellung über das sogenannte Out-GridView. Um selbiges nutzen zu können, muss zuvor allerdings im Server-Manager das Feature Windows Powershell Integrated Scriptin Environment (ISE) installiert werden:

Danach kann der Befehl wie folgt verwendet werden:

Get-ADUser -Filter {name -like „*“} -SearchBase „OU=[Organisationseinheit],DC=[Domäne],DC=[TLD]“ -Properties HomeDirectory,ProfilePath | Out-GridView

Im Ergebnis öffnet sich ein neues Fenster, in dem sich die Spalten manuell aktivieren, deaktivieren und beliebig ordnen lassen – für eine schnelle Überblicksgewinnung ideal!

Der Inhalt eines solchen Grids lässt sich selbstverständlich markieren und bspw. direkt (via Copy & Paste) in Microsoft Excel einfügen und weiterverarbeiten.

Setzen von Benutzer-Eigenschaften

Das Setzen bzw. die Änderung von Eigenschaften bei mehreren Benutzer gleichzeitig, ist natürlich nur für entsprechende Felder wirklich sinnvoll. Dies könnten bspw. die Eigenschaften Adresse, Anschrift und Internetseite sein. Mit dem Befehl

Set-ADUser -Identity [Benutzername]  -StreetAddress „Firmenstraße 123“ -HomePage „http://www.internetseite.de“

können für einen bestimmten Benutzer mehrere Eigenschaften in einem Schritt geändert oder gesetzt werden.

Im folgenden Beispiel werden nun diese und einige Felder mehr automatisch für die Benutzer gesetzt, die vorher mit dem Kommando Get-ADUser eingeschränkt werden, in meinem Beispiel alle:

Get-ADUser -Filter {name -like „*“} -SearchBase „OU=[Organisationseinheit],DC=[Domäne],DC=[TLD]“ | Set-ADUser -HomePage „http://www.internetseite.de“ -StreetAddress „Firmenstraße 123“ -City „Musterstadt“ -PostalCode „01234“ -Country „DE“ -State „Bundesland“ -Fax „+49 (0) 815 / 12345678“ -Company „Musterfirma GmbH“

Natürlich ist der obige Befehl vor Ausführung genau zu prüfen und ggf. vorher mit einzelnen Benutzern zu testen, um böse Überraschungen zu vermeiden, da die PowerShell-Kommandos ohne Nachfrage ausgeführt werden.

Fazit

Die Windows PowerShell ist ein extrem mächtiges Werkzeug und wird von Microsoft nicht umsonst mit jeder neuen Windows Version erweitert und gepflegt – nahezu jeder Windows-Administrator ist vermutlich schon einmal damit in Berührung gekommen. Auf Grund der Vielzahl an Befehlen und den daraus resultierenden Möglichkeiten habe ich die obigen Kommandos schon für meine eigene Wiederverwendung dokumentiert. Wenn ich damit zusätzlich auch anderen helfen konnte, freut mich das natürlich. Wie bei allen meinen Beiträgen gilt: Bei Tipps, Vorschlägen sowie Fragen oder Kritiken hinterlasst bitte einen Kommentar.

Einen Blog am Leben zu erhalten kostet Zeit und Geld. Da ich auf meiner Seite weder Werbung einbinde, noch andersweitige Zuwendungen erhalte, freue ich mich über jede kleine Spende. Einfach und unkompliziert geht das über PayPalMe. Du unterstützt damit diesen Blog. Vielen Dank.

Kommentare für “PowerShell: Benutzer-Eigenschaften im Active Directory auslesen oder ändern”

  • Bent Schrader

    Auf Grund der am 25. Mai 2018 in Kraft tretenden europäischen Datenschutz-Grundverordnung wurden alle Kommentare abgeschaltet und gelöscht. Damit wird die Erhebung personenbezogener Daten vermieden. Das DSGVO wurde von Professor Thomas Hoeren zu "einem der schlechtesten Gesetze des 21. Jahrhunderts" gekürt, mit der Bemerkung, dass überbordene Werk sei "hirnlos". Ich bedaure sehr, das damit die Möglichkeit zum Austausch von Informationen von Gleichgesinnten verhindert wird.