RSAT AD-Powershell
Achtung
Auch wenn mit den AD Commandlets sehr schnell und einfach Felder an
AD-Objekten zu ändern sind, so sollten Sie alle Exchange Veränderungen
weiterhin mit den Exchange Commandlets durchführen.
Als Alternative für eine einfache DOS-Box eignen sich DSAdd etc.
Mit Windows 2008 R2 hat Microsoft endlich auch einige Powershell Commandlets für die Verwaltung des Active Directory mitgeliefert. Vorher war nur der Weg direkt per ADSI, LDAP oder eben mit Drittherstellerskripten (Hier namentlich Quest PowerPack for Active Directory) möglich.
Wer nun aber glaubt, dass er nur ein Powershell Addin installieren und laden muss, sieht sich getäuscht. Es gilt ein paar Fakten zu kennen
- Commandlets nur auf Windows
2008R2 oder Windows 7
Die Installation der Powershell-Module auf einem anderen Betriebssystem ist nicht möglich. Wer also von Windows XP, Windows 2003 oder selbst Windows 2008 RTM diese Commandlets nutzen will, kann die maximal über eine "Remote Powershell" auf einen Windows 2008R2 Server durchführen. (Siehe auch PSRemote) - Backend Server
Aber selbst wenn Sie z. B. auf einem Windows 2008R2 oder Windows 7 Client die Module installiert haben, dann arbeiten diese Commandlets nicht per LDAP direkt gegen einen beliebigen DC, sondern Sie nutzen die Active Directory Gateway Services, welche Sie per TCP ansprechen. Diese sind auf einem Windows 2008 R2 DC mit installierbar aber auch für Windows 2003 und Windows 2008 RTM verfügbar. Müssen aber getrennt herunter geladen und installiert werden.
Wer also unbedingt von einem Windows XP, Windows 2003 oder Windows 2008 per Powershell die Befehle ausführen will, kann dies nur per Remote Powershell gegen einen Windows 2008R2 Server machen, der seinerseits gegen eine Windows DC geht, auf dem die Active Directory Gateway Services installiert sind.
Active Directory Gateway Services.
Allerdings benötigen Sie dazu mindestens einen Windows 2008 R2 Domain Controller in ihrer Domäne. Hintergrund ist, dass die Powershell-Commandlets auf die Active Directory Web Services über Port 9389 gehen, wie in einem Netmon Mitschnitt gegen einen Windows 2003 DC gut zu sehen ist.

Dieser ist auf dem Port 9389 mal taub und lehnt die Verbindung ab. Dieser wird erst auch auf Windows 2008 und 2003 erreichbar, wenn die Active Directory Web Services installiert sind.
Active Directory Management Gateway Service
(Active Directory Web Service for Windows Server 2003 and Windows Server
2008)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=008940c6-0296-4597-be3e-1d24c1cf0dda
Für den Einsatz auf Windows 2003 SP2 ist aber noch ein Hotfix erforderlich.
- 969429 Windows 7 clients cannot locate the Active Directory Management Gateway service that is installed on Windows Server 2003-based domain controllers
- 969166 A hotfix rollup package for Active Directory Web Service is available for the .NET Framework 3.5 SP1
Erst dann sind auch Windows 2008 und Windows 2003 Server bereit, die Anfragen der Active Directory Powershell Module anzunehmen. Sie sollten dann in den Diensten auch die Active Directory Web Services sehen

Der Zugriff erfolgt über Port 9389, so dass hier eventuell auch noch Firewall-Einstellungen erforderlich sind.
Installation auf Windows 2008R2
Hier ist die Funktion einfach über die Funktion "Windows Features" nach zu installieren und dann in der Powershell einzubinden
Import-Module ServerManager Add-WindowsFeature RSAT-AD-PowerShell
Installation auf Windows 7
Sie können aber auch auf Windows 7 Clients mit der Powershell und den Commandlets arbeiten. Voraussetzung ist aber Windows 7 Enterprise, Professional, oder Ultimate. Auf allen anderen Versionen kann das Paket nicht installiert werden
Remote Server Administration Tools for Windows 7
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&displaylang=en
64bit 221MB, 32bit 215MB
Nach der Installation können Sie dann analog zum Server die Funktion über Windows Features addieren.
Der "Installer" ist leider nur für Windows 7 RTM verfügbar und verhindert die Installation auf Windows 7 SP1. Sicher wird Microsoft bald eine aktuellere Version der RSAT-Tools bereit stellen. In der Zwischenzeit rät Microsoft dazu, das SP1 zu deinstallieren, dann die Tools zu installieren und danach wieder SP1 aufzuspielen. Ziemlich vor Arbeit und nur möglich, wenn Sie vorher Windows 7 RTM installiert und die Deinstallationsdateien nicht entfernt haben. Prinzipiell funktionieren die Commandlets ja auch auf Windows 7 SP1.
Die Installation verhindert aber nur der Installer selbst. Der Trick besteht also darin, den Installer zu umgehen, indem Sie einfach das Paket entpacken
expand -f:* "amd64fre_GRMRSATX_MSU.msu" %temp%\RSAT

Dann müssen Sie das Paket über den Paketmanager unter Angabe der XML-Datei installieren.
start / WAIT pkgmgr.exe /n:%temp%\RSAT\Windows6.1-KB958830-x64.xml
Durch den Aufruf des PKGMGR mit "Start /Wait" kommt der Befehl erst wieder, wenn der Paketmanager sich auch beendet hat. Eine Bildschirmausgabe gibt es weiter nicht. Wer die Installation ohne "Start /Wait" ausgeführt hat, sollte z.B. im Taskmanager kontrollieren, ob der Prozess pkgmgr.exe schon beendet ist.

Wenn der PKGMR sich beendet hat, dann sollten Sie die AddOns in der Liste der Windows Features finden und installieren können.

Bedenken Sie aber, dass ein Windows 7 Desktop mit einem permanent lokal angemeldeten Administrator ein hohes Risiko darstellt. Besser ist hier dann die Ausführung mit "RunAs". Beachten Sie auch, dass "User Account Control" auch bei der Powershell die schreibende Funktion verhindern kann.
Einbinden in Powershell
Wenn Sie auf ihrem PC auch Powershell 2 installiert haben, können Sie die neuen Befehle einfach mit einem Import aktivieren
Import-Module ActiveDirectory
Danach sind die Commandlets direkt erreichbar. Vielleicht fangen Sie erst einmal mit "ungefährlichen" Commandlets an, die mit "Get-" beginnen wie.
# Ausgabe aller benutzer
Get-ADUser Administrator
#Anzeige der Gruppenmitglieder
Get-ADGroupMember administrators
Die Powershell-Befehle sind allerdings deutlich leistungsfähiger, als allgemein angenommen.
Get-ADGroupMember administrators -recurse
Die Option "Recurse" läuft rekursiv alle Gruppen durch und listet alle Benutzer und Computer (aber keine Gruppen mehr), die Mitglied dieser Gruppe sind. Dabei werden natürlich Schleifen und redundante Einträge eliminiert.
Auch bei der "Suche" können sehr effektive Filter genutzt inklusive Rekursion genutzt werden.
Get-ADUser `
-SearchScope Subtree `
-SearchBase "dc=source,dc=net" `
-Filter 'memberOf -RecursiveMatch $sourcegroup.DistinguishedName'
`
-Server $SourcedcName:3268 `
-Properties
ObjectSID,name,samAccountName,displayName,givenName,surName,telephoneNumber,mail
Auch eine Verkettung ist einfach möglich, wie eine Suche nach AdminCount zeigt (Siehe auch AdminSDHolder)
Get-ADGroup -ldapFilter "(admincount=1)" | Get-ADGroupMember -Recursive | Group-Object

Über die Angabe von Credentials können sogar andere Domänen und Forests direkt angezapft werden.
# Ausnahmeweise Benutzername und Kennwort im Skript
$cred = new-object -typename System.Management.Automation.PSCredential
-argumentlist "Admin", "Kennwort"
get-aduser -server dc2 -credential $cred
Alles in allem sind die Windows 2008 Powershell Add-Ons für Active Directory eigentlich schon ein Pflichtprogramm bei der Installation eines Windows 2008 Servers.
Weitere Links
- DSAdd
- PSRemote
- Active Directory Module for Windows PowerShell –
Quick start guide
http://blogs.msdn.com/b/adpowershell/archive/2009/02/25/ad-powershell-quick-start-guide.aspx - How to Install the Active Directory Module for
Windows PowerShell
http://www.mikepfeiffer.net/2010/01/how-to-install-the-active-directory-module-for-windows-powershell/










