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 }