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();