28.02.12 | Autor / Redakteur: Frank Castro Lieberwirth / Andreas Donner

IP-Insider zeigt Ihnen, wie Sie mit dem MS Script Center ein PowerShell-Skript für den automatischen Massenimport von Kontaktdaten in Active Directory und Exchange Server 2010 erstellen.
Das Microsoft „Script Center“ ist ein Eldorado für alle, die Aufgaben in Form eines Skripts automatisieren wollen. Neben den technischen Grundlagen zu PowerShell und Visual Basic findet der Leser hier auch zahlreiche Programmbeispiele.
Dabei profitiert Microsoft in seiner „TechNet Script Center Repository“ von vielen freien Autoren, die ihre Skripte veröffentlichen. Diese dynamische Community löst so manches Buch ab und verkürzt Entwicklungszeiten eines Skripts auf wenige Minuten, wie folgendes Beispiel zeigt.
Die Wahl der Skriptsprache fällt auf die PowerShell 2.0, da es sowohl für Active Directory, als auch für Exchange Server 2010 PowerShell-Module gibt, die die o.g. Aufgaben erfüllen können. Doch welche Kriterien soll der Massenimport erfüllen und mit welcher Methodik verwendet man das Script Center?
Eine Suche zeigt, dass es kein „fertiges“ Powershellskript gibt. Es muss also nach geeigneten Ideen gesucht werden. Folgende Möglichkeiten bieten sich an:
Um die CSV-Datei (Datei: liste.csv; die Namen sind frei erfunden) übersichtlich zu gestalten, enthält sie neben der Kopfzeile zunächst nur zwei Elemente:
Name;Extern
Max Muster;MaxMuster@MaxundMoritz.de
Willi Meister;Willi.Meister@MeisterundCo.de
Hier hilft entweder ein Blick in den Bücherschrank oder in die Suchfunktion des Scriptcenters, was in vielen Fällen die schnellere Variante ist. Die Suche zeigt ein Beispielskript von Hr. Thierry Mille an, das einen Massenimport aus einer CSV-Datei von normalen Konten in Active Directory durchführt. Er verwendet eine einfache foreach-Schleife mit Variablen, wobei eine Verkettung mit den Elementen (1. Zeile!) der CSV-Datei vorgenommen wird.
# Thierry Mille, http://gallery.technet.microsoft.com/scriptcenter/ed20b349-9758-4c70-adc0-19c5acfcae45
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path ".\userslist.csv"
foreach ($User in $Users)
{
$OU = "OU=Employees,DC=lab-os,DC=com"
$Password = $User.password
$Detailedname = $User.firstname + " " + $User.name
$UserFirstname = $User.Firstname
$FirstLetterFirstname = $UserFirstname.substring(0,1)
$SAM = $FirstLetterFirstname + $User.name
New-ADUser -Name $Detailedname -SamAccountName $SAM -UserPrincipalName $SAM -DisplayName $Detailedname -GivenName $user.firstname -Surname $user.name -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path $OU
}
Da in unserem Projekt jedoch keine neuen Benutzer anzulegen sind, sondern „nur“ E-Mail-Kontakte muss das Cmdlet „New-ADUser“ entsprechend substituiert werden. Natürlich stimmen dann auch die Eingangsvariablen hinsichtlich Namen und Funktion nicht mehr. Ein Blick auf die Exchange Hilfe zeigt das passende Exchange Cmdlet zum Erstellen eines Kontakts: New-Mailcontact
Anhand des Beispielskripts wird die Schleife mit der CSV-Datei und des Mailkontakterstellung wie Folgt durchgeführt:
# Skript von Frank Castro Lieberwirth
# Container
$Users = Import-Csv -Delimiter ";" -Path ".\liste.csv"
# Foreach-Schleife listet die einzelnen Elemente des Containers auf, vergl. auch Foreach-Objekt
foreach ($User in $Users)
{
# Variable Zielcontainer in Active Directory
$OU = "OU=ExternalContacts,DC=MyDomain,DC=local"
# Variable Benutzername: Verkettung mit der 1. Zeile in der CSV-Datei
$UserName = $User.Name
# Variable externe Adresse: Verkettung mit der 1. Zeile in der CSV-Datei
$ExternalAddress = $User.Extern
# Neuer Kontakt
New-Mailcontact -Name $UserName -ExternalEmailAddress $ExternalAddress -OrganizationalUnit $OU
# Kontakteigenschaften aendern:
# E-Mail-Adressrichtlinie fuer den Kontakt deaktivieren
Set-MailContact -EmailAddressPolicyEnabled $false -Identity $UserName
}
Um zu zeigen, dass auch gleichzeitig die Kontakteigenschaften verändert werden können, ist in der Schleife noch das Cmdlet „Set-MailContact“ eingebaut worden.
Das Microsoft Script Center ist ein ausgezeichneter Ressourcenpool zur Entwicklung eigener Skripte. Wenn gerade mal kein passendes Skript veröffentlicht wurde, kann doch sehr schnell eine Idee für das eigene Projekt entwickelt werden. So wie am Beispiel eines Massenimports von externen E-Mail-Kontaktadressen in Active Directory und Exchange Server 2010 mit PowerShell.
Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 32148800) | Archiv: Vogel Business Media