Für alle die mit Powershell noch wenig Kontakt hatten, ist das folgende Beispiel ein guter Einstieg, die Welt und Möglichkeiten von Powershell kennenzulernen. Es zeigt wie schnell und einfach man auch etwas komplexere Herausforderungen meistern kann und das mit nur wenigen Zeilen Skript.

Im konkreten Beispiel geht es darum, wie man mit Hilfe von Powershell eine Liste an Usern aus einem Excel im Active Directory in einer bestimmten OU als User Account anlegt.

Man startet zunächst eine Powershell Session und lädt die benötigten Module. Für dieses Beispiel benötigt man zunächst das Module für Active Directory, das man mittels import-module laden kann. Dieser Befehl lädt ein angegebenes Modul in die aktive Umgebung von Powershell.

Module sind Pakete, die Elemente (z.B. Cmdlets, Skripts, Funktionen, Variablen sowie andere Tools und Dateien) zur Verwendung mit Windows PowerShell enthalten. Nachdem ein Modul importiert wurde, können Sie die Modulelemente in der Sitzung verwenden (also in unserem Beispiel der Befehl New-ADUser aus dem Module Active Directory).

Der Befehl dazu lautet also:

Import-Module ActiveDirectory

Anschließend muss das CSV File (eine komma-separierte Datei) geladen werden. Das CSV File ist wie folgt aufgebaut (die erste Zeile ist die Spaltenüberschrift, dies ist wichtig, da auf Basis dieser Bezeichnungen die Variablen dann im Skript später verwendet werden):

Nachname,Vorname,Email,Standard Title,Gruppe

Huber,Andreas,ahuber, Consultant,Gruppe1

Mueller,Wolfgang,wmueller,Senior Consultant,Gruppe2

Bauer,Michael ,mbauer,Consultant,Gruppe2

Das Laden des Files wird mit dem Befehl

Import-CSV filename.csv

durchgeführt. Nachdem dies geschehen ist kann man mittels dem sogenannten „Piping“ das Ergebnis des Befehles in dem nächsten Befehl weiterverwenden. Dazu wird das Pipe Symbol |genutzt und an einen Befehl der nächste Befehl angehängt.

In diesem Fall möchten wir über die einzelnen Zeilen des CSV Files iterieren und für jede Zeile ein AD User Account einrichten.

Dazu ergänzt man den Befehl um folgenden Code

import-csv Userliste2.csv | foreach {}

Innerhalb des foreach Blocks innerhalb der geschwungenen Klammern (das für die Iteration über die einzelnen Zeilen verantwortlich ist) kann man nun den eigentlich Befehl oder die Befehle schreiben, die dann je Zeile im CSV File einmal ausgeführt werden.

Das eigentliche Anlegen des AD Accounts wird mit dem Befehl New-ADUser aus dem Module ActiveDirectory ausgeführt.

Zum Beispiel:

New-ADUser -Surname “Rynes” -Name “Andreas Rynes” -SamAccountName “arynes” -GivenName “Andreas” -DisplayName “Andreas Rynes” -UserPrincipalName “arynes@microsoft.com” -AccountPassword (ConvertTo-SecureString -AsPlainText "pass@word1" -Force) -Enabled $true -Path "CN=Users,DC=dcsat,DC=global" -PasswordNeverExpires $false -ChangePasswordAtLogon $true

Der Befehl enthält eine Reihe von Parametern, die innerhalb von Powershell alle nach demselben Schema definiert sind:

-[Name des Parameters] Wert

Der Name des Parameters wird durch das Module festgelegt, der Wert wird durch den Script-Programmierer festgelegt. Dafür ist es hilfreich die genaue Syntax eines Befehles zu kennen, ein einfaches

Get-Help New-ADUser

listet alle Optionen des jeweiligen Befehles auf. Mittels Get-Help New-ADUser –examples kann man sich auch noch Script Bespiele (in diesem Fall für den Befehl New-ADUser) ansehen.

Das gesamte Skript für unsere Aufgabe sieht letztendlich dann wie folgt aus und muss für den Eigenbedarf natürlich angepasst werden, z.B. Spaltennamen innerhalb des CSV Files und die OU in dem die User angelegt werden (im Parameter Path):

import-module ActiveDirectory

import-csv Userliste.csv | foreach {

$Name = $_.Vorname + " " + $_.Nachname

$princ = $_.email + "@microsoft.com"

New-ADUser -Surname $_.Nachname -Name $Name -SamAccountName $_.email.ToLower() -GivenName $_.Vorname -DisplayName $Name -UserPrincipalName $princ -AccountPassword (ConvertTo-SecureString -AsPlainText "pass@word1" -Force) -Enabled $true -Path "CN=Users,DC=microsoft,DC=com" -PasswordNeverExpires $false -ChangePasswordAtLogon $true

}

Wie man außerdem im gesamten Skript sieht werden auch noch 2 Variablen definiert, die Vorname und Nachname mit einem Blank zur Variablen $Name vereinen. Des Weiteren wird auch noch der UserPrincipalName aus der Spalte „email“ und dem fixen Wert „@microsoft.com“ zusammengebaut. Diese beiden Variablen werden dann im New-ADUser verwendet um 2 Parameter zu befüllen.

Das Skript kann auch in ein Textfile mit der Endung ps1 gespeichert werden und als solches innerhalb der Powershell ausgeführt werden.

Eine Einführung zu Powershell und ein paar weiterführende Informationen finden sich hier:

http://technet.microsoft.com/de-de/scriptcenter/dd742419

http://technet.microsoft.com/de-de/library/dd347730.aspx

Autor: Andreas Rynes, Solution Architect – Datacenter and Virtualization bei Microsoft Services