Immer mal wieder wundert man sich über Objekte in der AD. Manchmal hilft es dann auf schnellen Weg den Ersteller zu ermitteln. Dieses ist natürlich über den Reiter „Sicherheit“/“Security“ und „Erweitert“/“Advanced“ in Erfahrung zu bringen. Ich suchte allerdings einen Weg, der mich schneller ans Ziel bringt.
Dabei ist diese folgende Code-Schnipsel entstanden:
#Definiton der zu nutzenden Assembly
Add-Type -AssemblyName Microsoft.VisualBasic
#Inputbox zur Abfrage des Objectnamens
#Computernamen müssen mit einem zusätzlichen $-Zeichen versehen werden
$Query = [Microsoft.VisualBasic.Interaction]::InputBox('Enter a object name', 'OwnerSearch', "$env:UserName")
#Suche nach dem Object
$object = [ADSI](([ADSISearcher]"(SamAccountName=$query)").FindOne().Path)
#Ermittlung des Owners
$objectowner = $object.PsBase.ObjectSecurity.Owner
#Ausgabe über Messagebox
[System.Windows.Forms.MessageBox]::Show("Objekt-Ersteller: $objectowner","OwnerSearch",0)
#Speicherung des ermittelten Wertes in der Zwischenablage
Set-Clipboard $objectowner
Man gibt in das Eingabefeld den SamAccountname des Objektes ein. Es kann ein Benutzer, eine Gruppe oder ein Computer sein. Beim Computer-Objekt ist darauf zu achten, dass ein $Zeichen an den Namen angefügt werden muss.
Entsprechend wird das Ergebnis als Information über eine „Message-Box“ angezeigt und auch in die Zwischenablage definiert. Dadurch kann der Wert direkt weiter verarbeitet werden.