Thread Daten eines Users aus dem AD auslesen: Userdaten aus AD auslesen (5 answers)
Opened by it12lsp at 2005-10-24 18:22

Strat
 2005-11-23 18:18
#33708 #33708
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich verwende fuer AD nur sehr ungern Net::LDAP, weil es da beim schreiben arge Probleme mit Sonderzeichen gibt (LDAPv2 funktioniert witzigerweise recht gut). Beim Lesen ist das allerdings kein Problem, es gibt ja CPAN:Encode...

Eine reine ADSI-Loesung ueber den globalen Katalog koennte folgendermaszen aussehen (wenn der PC in der Domain haengt):
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use Win32::OLE;
$Win32::OLE::Warn = 3;

my @attrs = qw(ADsPath cn sn givenName samAccountName displayName telephoneNumber
mail physicalDeliveryOfficeName facsimileTelephoneNumber);

my $searchString = "GC://dc=myDomain,dc=de;(&(objectClass=user)(sn=Mayer));" .
join(",", @attrs) . ";SubTree";

my $conn = Win32::OLE->new("ADODB.Connection");
$conn->{Provider} = "ADsDSOObject";
$conn->Open("ADSI Provider");
if (my $error = Win32::OLE->LastError) { die "Error in connect: $error\n"; }

my $adoCmd = Win32::OLE->new('ADODB.Command');
$adoCmd->{ActiveConnection} = $conn;
$adoCmd->{CommandText} = $searchString;
$adoCmd->Properties->{'Page Size'} = 50;

my $rs = Win32::OLE->new('ADODB.RecordSet');
$rs->Open( {Source => $adoCmd} );

while (not $rs->EOF()) {
my %object = map {
$attr[$_] => $rs->Fields($_)->{Value}
} 0..$#attr;
# mach was mit %object, z.B.
foreach my $attr (sort keys %object) { print "$attr => $object{$attr}\n" }

$rs->MoveNext;
} # while

$conn->Close();

(Fehlerabfrage habe ich nur eine getippt; die anderen sehen eh fast identisch aus)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Daten eines Users aus dem AD auslesen: Userdaten aus AD auslesen