BillionPhotos.com - stock.adobe.

PowerShell für AD: so bearbeiten Sie Attribute und Werte

Mit der PowerShell können Admins Werte und Attribute in Active Directory anpassen und verwalten. In diesem Beitrag erklären wir, wie Sie zu diesem Zweck Skripte schreiben.

PowerShell nimmt Administratoren viele überflüssige Arbeitsschritte ab. Das gilt auch für das Verwalten von Attributen und Werten in Active Directory (AD). Änderungen sind dadurch schneller möglich und lassen sich auch in Skripten automatisieren.

In diesem Artikel erklären wir den Prozess dafür, wie Sie ein Skript zum Zuweisen von Benutzerattributen schreiben. Die Vorgehensweise lässt sich jedoch auch auf viele andere Active-Directory-Verwaltungsaufgaben übertragen.

Benutzerdaten auslesen und mit der PowerShell ändern

Sie können Benutzerdaten in der von Ihnen verwalteten Domäne mit Get-ADObject auslesen. Die einzelnen Daten sind bei Benutzerobjekten auf der Registerkarte Attribut-Editor zu finden. Um bestimmte Daten aus Active Directory auszulesen, zum Beispiel displayName und description, verwenden Sie folgenden Befehl:

Get-ADObject -Filter "ObjectCategory -eq 'person'" -SearchBase „DC=Joos,DC=int“ -Properties description, displayName

Sie benötigen diese Informationen, um sie zum Beispiel über eine Variable in andere Befehle zu kopieren.

Abbildung 1: Verschiedene Eigenschaften eines Benutzers lassen sich mit PowerShell ändern.
Abbildung 1: Verschiedene Eigenschaften eines Benutzers lassen sich mit PowerShell ändern.

PowerShell kann mit Set-ADObject in Active Directory schreiben. Angenommen, Sie möchten allen Benutzerobjekten oben die Beschreibung Standort Bad Wimpfen zuweisen, sieht der Befehl folgendermaßen aus:

Get-ADObject -Filter "ObjectCategory -eq 'person'" -SearchBase „DC=Joos,DC=int“ -Properties description, displayName | Set-ADObject -description „Standort Bad Wimpfen“

Um die Änderungen anzuzeigen, verwenden Sie wieder Get-ADObject:

Get-ADObject -Filter "ObjectCategory -eq 'person'" -SearchBase „DC=Joos,DC=int“ -Properties description

Es ist auch möglich alle Attribute eines einzelnen Benutzers auszulesen:

Get-ADUser -Identity Joost -Properties *

Die angezeigten Attribute lassen sich anschließend ändern. Wie das geht, zeigen die nächsten Abschnitte in diesem Beitrag.

Abbildung 2: Attribute von Anwendern werden in die PowerShell-Konsole ausgegeben.
Abbildung 2: Attribute von Anwendern werden in die PowerShell-Konsole ausgegeben.

Mit dem folgenden Befehl fragen Sie Benutzer ab, bei denen die Beschreibung auf Standort Bad Wimpfen gesetzt ist:

Get-ADUser -Filter "description -eq ' Standort Bad Wimpfen'"

Es ist auch möglich nur AD-Benutzer in einer bestimmten Organisationseinheit auszulesen:

Get-ADUser -Filter * -SearchBase "OU=Einkauf,OU=Benutzerkonten,DC=Joos,DC=int"

Dieses Ergebnis lässt sich weiter anpassen:

Get-ADUser -Filter "description -eq ' Standort Bad Wimpfen'" | Set-ADUser -description „Standort Hof Erbach“

Außerdem können Sie prüfen, ob Ihr Befehl erfolgreich durchgeführt wurde.

Get-ADObject -Filter "ObjectCategory -eq 'person'" -SearchBase „DC=Joos,DC=int“ -Properties description

Diese Vorgehensweise funktioniert mit sämtlichen Attributen in Active Directory, die in Active Directory-Benutzer und -Computer bei Attribut-Editor angezeigt wird.

Wenn mehrere Benutzer gleichzeitig geändert werden sollen, ist das mit PowerShell ebenfalls problemlos möglich:

Get-ADUser -Filter 'Name -like "*"' -SearchBase 'OU=HumanResources,OU=UserAccounts,DC=FABRIKAM,DC=COM' -Properties DisplayName | % {Set-ADUser $_ -DisplayName ($_.Surname + ' ' + $_.GivenName)}

Der obenstehende Befehl setzt die Anzeigenamen der Benutzer auf eine Kombination aus den jeweiligen Vor- und Nachnamen.

Multi-Valued-Werte steuern

Einige Attribute in Active Directory ermöglichen mehrere Werte. In diesem Fall ist es sinnvoll, die vorhandenen Werte nicht zu überschreiben, sondern zu ergänzen. Zum Anpassen der Werte stehen für Cmdlets die Parameter -Add, Replace und -Remove zur Verfügung. Während -Add neue Werte zu einem Attribut hinzufügt, entfernt -Remove einzelne Werte; der Rest bleibt bestehen. Mit -Replace können Sie einzelne Daten komplett ersetzen, statt sie nur hinzuzufügen.

Neben den Standard-Attributen können Sie auch mit einem CustomAttribute in AD arbeiten. Das ermöglicht das Erstellen von benutzerdefinierten Werten für Benutzer-, Computer-, oder Gruppenkonnten. Um deren Werte abzufragen, können Sie folgenden Befehl verwenden:

Get-ADUser -Properties * -Filter * | Select-Object  samaccountname,customattribute1

Ein bekanntes Beispiel ist das Attribut ProxyAddresses in Active Directory. Dieses kommt vor allem bei der Verwaltung von Microsoft Exchange zum Einsatz. Das Attribut speichert alle E-Mail-Adressen eines Benutzers. Dabei handelt es sich um ein typisches Multi-Valued-Attribut – also ein solches mit mehreren Werten. Es ist möglich, diese Werte mit folgendem Befehl zu ändern:

Set-ADUser -Identity "Joost" -Replace @{ ProxyAddresses = @("[email protected]","[email protected]","[email protected]")}

Und mit einem weiteren Befehl lassen Sie sich die Änderung anzeigen:

Get-ADUser -Identity Joost -Properties *

Um einzelne Werte aus dem Attribut zu entfernen, zum Beispiel eine der zugeteilten E-Mail-Adressen, nuten Sie:

Set-ADUser -Identity "Joost" -Remove @{ ProxyAddresses = @("[email protected]")}

Der Befehl löscht die E-Mail-Adresse [email protected] aus dem Attribut. Die anderen Werte bleiben erhalten. Auf dem gleichen Weg können Sie einzelne Werte hinzufügen:

Set-ADUser -Identity "Joost" -Add @{ ProxyAddresses = @("[email protected]")}

Auch das lässt sich in PowerShell überprüfen:

Get-ADUser -Identity Joost -Properties *

Außerdem können Sie diese Werte kopieren – entweder auf ein neues Benutzerkonto, oder auf bereits vorhandene Konten. Dazu speichern Sie die alten Daten zunächst in einer Variablen:

$ProxyAddresses = (Get-ADUser -Identity "Joost" -Properties "ProxyAddresses").ProxyAddresses

Sie überprüfen die Werte mit $ProxyAddresses. Um diese Werte auf ein neues Benutzerkonto zu kopieren, kann zum Beispiel folgender Befehl verwendet werden:

Set-ADUser -Identity "NewUser" -Replace ([Array] $ProxyAddresses)

Wenn Sie diesen Vorgang automatisieren möchten, erstellen Sie dafür eine CSV-Datei, in die Sie die alten und neuen Benutzerkonten aufnehmen. Danach können Sie mit einem PowerShell-Skript sämtliche Daten in einem Rutsch kopieren:

UserList = Get-Content "C:TempUsersToCopyProxyAddresses.CSV"

foreach ($User in $UserList)

{

     $OldUserProxyAddresses = (Get-ADUser -Identity ($User.OldSamAccountName) -Properties "ProxyAddresses").ProxyAddresses

     Set-ADUser -Identity ($User.NewSamAccountName) -Replace ([Array] $OldUserProxyAddresses)

Erfahren Sie mehr über Desktop-Management

ComputerWeekly.de
Close