Mit der PowerShell auch spezielle Benutzer Attribute ändern

In meinem letzten Beitrag zum Thema SharePoint 2010 und der Organisationsbrowser habe ich beschrieben, wie ich das Feld ANMERKUNG eines Users im AD manuell mit Daten fülle und diese mit Hilfe des Benutzerprofildienstes in den SharePoint Organisationsbrowser einbinden kann. Dank der Anmerkung von Cyrano Heine wollten wir das Ganze noch ein wenig optimieren und das eigentliche Active Directory Attribut INFO (im AD : Benutzer und Computer auf der Registerkarte Rufnummern) mit den schon vorhanden Informationen des Benutzerkontos automatisch zu füllen.

Die Grundlage unserer Idee ist dabei Information eines Benutzerkontos auszulesen und in ein anderes Attribut zu schreiben. Im ersten Schritt also erst mal des AD Modul importieren.

Import-Module ActiveDirectory

Zum Testen lese ich erst einmal die Informationen eines Benutzers aus um zu sehen, was wir mir das Cmdlet für Informationen übergibt.

–Identity adamm

Dieses Cmdlet liefert mir eine kurze Liste mit zwar wichtigen Informationen aber noch nicht die für mich wichtigen. Also geht’s zum nächsten Schritt mit dem Parameter PROPERTIES.

Get-ADUser –Identity adamm –Properties *

Das sieht schon besser aus! Alle dem Benutzerobjekt zugeordnete , ob leer oder mit Daten gefüllt, stehen mir jetzt zur Verfügung. Damit ich diese in Skripten auch verarbeiten kann Filter ich die für mich notwendigen und weise diese einer Variable zu.

$userinfo = Get-ADUser –Identity adamm –Properties telephoneNumber, mobile, description, mail

Um diese Informationen jetzt anzeigen zu können, lese ich einfach den Inhalt der Variable $userinfo aus bzw. spreche ich das gewünschte Attribut direkt über $userinfo.mail an.

Jetzt kommen wir aber zum eigentlich Teil. Die in den ersten Schritten ausgelesenen und in Variablen geschriebenen Informationen sollen jetzt in das Attribut INFO desselben Benutzerobjektes geschrieben werden. Also folgendes Cmdlet aufrufen

–Identity adamm

Aber wie geht es hier weiter? Ein Blick in die PowerShell Hilfe (Get-Help Set-ADUser) zeigt mir folgende Schalter und Optionen:

Viele Möglichkeiten bietet mir die PowerShell an aber leider nicht das von mir gewünschte Attribut INFO. Wenn man an dieser Stelle noch etwas weiter liest kommt man auf folgende Information:

Mit den Parametern Add, Replace, Clear und Remove kann ich also Eigenschaften ändern, die ich nicht direkt per Cmdlet und Schalter erreiche. Also doch noch mal tiefer in die Hilfe schauen und mit Hilfe von Get-Help Set-ADUser –Full die komplette Hilfe zu diesem Cmdlet aufrufen. An dieser Stelle stehen mir Unmengen an Hilfe-Seiten für nur dieses Cmdlet zur Verfügung. Danke für die gute Dokumentation an Microsoft! Im oberen Drittel finde ich dann auch ein paar Beispiele.

An dieser Stelle also die komplette Code-Zeile (in meinem Beispiel mit Replace weil in diesem Attribut schon Werte stehen die ich gerne ersetzen möchte):

Set-ADUser –Identity adamm –Replace @{info=„Mein Wert oder auch meine Variable“}

Jetzt geht’s an das Gesamtbild bzw. das Script. Das folgende Script ist also nun die Zusammenfassung der Aktionen, die ich oben erläutert habe. Hier aber in etwas komprimierter Form. Für das Verständnis habe ich die einzelnen Befehle noch etwas kommentiert.

# Active-Directory-Befehle (AD-Modul) in PowerShell laden
Import-Module ActiveDirectory
# Variable für Zeilenumbruch definieren
$nL = [Environment]::NewLine
# Hole alle Nutzer mit Attributen Tel-Nr, Mobil-Nr, Beschreibung, Email-Adr aus dem AD
Get-ADUser -SearchBase „OU=Benutzer,OU=Demo-OU,DC=domäne,DC=de“ -filter *
   -Properties telephoneNumber, mobile, description, mail | # Inhalt per Pipe übergeben
  # für jedes an die Pipe übergebene Objekt mache folgendes ..
  # .. weißt AD-Felder Beschreibung, Tel, Mobile, Mail dem AD-Feld Info zu
  ForEach-Object {
   # für den aktuellen AD-User ($_.) ersetze den Inhalt von Attributfeld Info mit...
   Set-ADUser -identity $_.SamAccountName -Replace
# „`“ : Zeilenumbruch im Script
    @{info=$_.Description + $nL + $nL +
    “Büro: “ + $_.telephoneNumber + $nL +
    “Mobil: “ + $_.mobile + $nL +
    “Email: “ + $_.mail
    }
   }

..und so sieht’s dann aus:

Ein Gedanke zu „Mit der PowerShell auch spezielle Benutzer Attribute ändern

  1. Hi Alexander,
    danke für das Skript, das funktioniert schon ganz gut.
    Jetzt hab ich aber folgendes vor. Ich will das Attribut Mobile nur für ganze OUs ändern.
    Heißt, der eigentliche Wert soll drinbleiben, nur dem Wert vorangestellt werden soll ein + oder eine 00 … aktuell habe ich nämlich in vielen OUs Syntaxfehler bei der Handynummer von Benutzern, damals wurden die Nummern mit 49 172 8150815 als Beispiel eingetragen. Das versuche ich nun zu korrigieren. Hast du da einen Rat parat ?
    Gruss

    Timbo

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.