Hallo zusammen,
wie kann ich einen AD-User zu einer Gruppe hinzufügen? Ich dachte, ich wäre schon sehr weit, denn mit folgendem Code geht manches Schreiben in Objekte des AD:
Delphi-Quellcode:
uses
web.win.adstypes,
activeds_tlb;
procedure WriteUserAttrib;
var
lResourceStr:
string;
lADObj: IADsObject;
lStr:
string;
begin
lResourceStr := '
LDAP://domain.de/cn=TestUser,ou=TEST,dc=domain,dc=de';
ADsOpenObject(lResourceStr, lUsername, lPassword, 1, IADsObject, lADObj);
lStr := lADObj.Get('
comment');
// nur zum Testen
Memo1.Lines.Add(lStr);
lADObj.Put('
comment', '
dummytext');
lADObj.SetInfo;
end;
Das funktioniert für einfache Attribute ganz gut, aber ich scheitere am Attribut "memberOf". Das ist ein Array und ich kann die Werte damit auch auslesen, aber ich bekomme es nicht hin, das wieder zurückzuschreiben.
Selbst so funktioniert es nicht, also nur auslesen und gleiches gleich wieder reinschreiben:
Delphi-Quellcode:
var
lMember: Variant;
begin
lMember := lADObj.Get('memberOf');
lADObj.PutEx(2, 'memberOf', lMember);
lADObj.SetInfo;
end;
Fehler: "Der Server kann die Anforderung nicht ausführen."
Nun hab ich es von der anderen Seite her probiert, also ausgehend von der Gruppe:
Delphi-Quellcode:
var
lResourceStr:
string;
lADObj: IADsGroup;
lStr:
string;
begin
lResourceStr := '
LDAP://domain.de/cn=TestGruppe,ou=TEST,dc=domain,dc=de';
ADsOpenObject(lResourceStr, lUsername, lPassword, 1, IADsGroup, lADObj);
lStr := lADObj.Get('
cn');
// nur zum Testen
Memo1.Lines.Add(lStr);
lADObj.Add('
cn=TestUser,ou=TEST,dc=domain,dc=de');
lADObj.SetInfo;
end;
Hier bekomme ich den ominösen
OLE-Fehler 80005000.
Weiß jemand Rat? Ich möchte nur die Powershell vermeiden, alle anderen Wege direkt in Delphi sind willkommen.
Viele Grüße
Harald