Möchte man z.B. AD Objekte auf einem Client ohne RSAT (Remote Server Administration Tools) abfragen, so bleibt einem lediglich der Zugriff auf die seit PowerShell v1.0 integrierten bzw. aus dem .NET Framework kommenden „ADSI“- und „ADSISearcher“-Klassen. Da der Umgang mit diesen nicht annährend so komfortable wie die Verwendung der Cmdlets aus dem Active Directory Snapin ist, habe ich einige Funktionen geschrieben, um dies zu vereinfachen. Die Funktionen findet man hier und die Parameter und Rückgabewerte der einzelnen Funktionen hier.
Natürlich ist das nur ein Bruchteil der über die ADSI-Schnittstelle möglichen Transaktionen, allerdings kann man anhand dieser weitere Funktionen schreiben.
Ein spannendes Beispiel ist, dass man z.B. über die Funktion „Add-GroupMemberByNetBIOS“ im Security-Context des Users ein neues Mitglied einer Gruppe hinzufügen kann, sofern der ausführende Benutzer das Attribut „member“ Gruppe bearbeiten darf. Dies kann man z.B. durch den Haken „Erlaube dem Besitzer die Mitgliederliste der Gruppe zu verändern“ in der Active Directory Users and Computers (ADUC) Konsole ermöglichen. Hierbei kann die SID auch aus einer anderen, mit dem aktuellen Forest vertrauten Domäne kommen. Sofern noch kein ForeignSecurityPrincipal für das neue Mitglied existiert, wird dies dabei von selbst erstellt und anstelle des Users berechtigt.
Führt man den Gedanken etwas weiter, wäre es hiermit zum Beispiel möglich, ein Self-Service-Tool für vereinfachte Gruppenverwaltung in PowerShell zu schreiben, welches auf jedem Client-PC auch ohne die Installation der Remote Server Administration Tools funktioniert.
http://faq-o-matic.net/?p=8279