2. August 2012: ActiveDirectory via PowerShell

PowerShell ist eine tolle Sache. Und das liegt nicht zwingend an dem sich irgendwie einstellenden Linux-Feeling. Vielmehr an der FlexibilitĂ€t und dem GefĂŒhl furchtbar effizient eigentlich einfache Aufgaben erledigen zu können, die mit einem GUI oder einer MMC-Konsole schrecklich lange dauern wĂŒrden. Aber das erwĂ€hnte ich ja bereits.

Und auch in Sachen ActiveDirectory hat Microsoft mittlerweile so viele CmdLets zur VerfĂŒgung gestellt, das man so ziemlich alles aus der PowerShell heraus steuern kann. Hier und heute meine Top 3:

  1. get-adgroup –f { name –like "*internet*access*" }
  2. get-acl \\server01\share01
  3. add-adgroupmembers somegroup –members user1, user2, laptop3

NatĂŒrlich macht das alles erst so richtig Spaß wenn man sie kombiniert. Hier zum Beispiel die von mir am hĂ€ufigsten genutzte Kombination um einen User in diverse Gruppen einzufĂŒgen (ich kann mir zwar kryptische Passwörter merken, aber logisch benannte Gruppennamen wollen sich mir nicht eintrichtern):

get-adgroup –f { name –like “vpn” } | add-adgroupmembers –members User02

Etwas komplexere AktivitÀten schreibt man jedoch besser in ein PowerShell Skript. So lassen sie sich nicht nur einfach an Kollegen weitergeben sondern auch als Job einplanen. Hier ein Skript das ich nutze im deaktivierte Computer-Accounts nach einer gewissen Zeitspanne zu löschen:

import-module activedirectory
$ou = read-host "Which OU is to be searched?"
$computers = get-adcomputer -filter 'enabled -eq $false' -searchbase $ou -properties Name, LastLogonDate | where {$_.LastLogonDate -le ((get-date).addmonths(-6))}
foreach($c in $computers){ remove-adcomputer $c  -whatif }