in reply to Re^2: ADSI -> 0x8002000e Error
in thread ADSI -> 0x8002000e Error

Well, I've finally found the solution by myself

use Win32::OLE; $Win32::OLE::Warn = 3; # see perldoc Win32::OLE my $userDn = 'cn=myself,ou=myOu,dc=myDomain,dc=myTld'; my $password = 'secret'; my @wantedFields = qw(ADsPath cn sn givenName sAMAccountName); my $searchFilter = "(&(objectClass=user)(sn=*))"; # connect to AD with user and password my $connObj = Win32::OLE->new('ADODB.Connection'); $connObj->{Provider} = 'ADsDSOObject'; $connObj->Properties->{'User ID' } = $userDn; $connObj->Properties->{'Password'} = $password; $connObj->Open('ADSI Provider'); # prepare a search my $searchString = join (";", "<LDAP://192.1.2.3/dc=myDomain,dc=myTld>", $searchFilter, join(",", @wantedFields), 'SubTree', ); my $adoCmdObj = Win32::OLE->new('ADODB.Command'); $adoCmdObj->{ActiveConnection} = $connObj; $adoCmdObj->{CommandText} = $searchString; $adoCmdObj->Properties->{'Page Size'} = 1000; # execute search and return user one by onesy my $rsObj = Win32::OLE->new('ADODB.RecordSet'); $rsObj->Open( { Source => $adoCmdObj } ); $rsObj->MoveFirst() if $rsObj and not $rs->EOF(); while (not $rsObj->EOF) { foreach my $i (0..$#wantedFields) { my $value = $rsObj->Fields($i)->{Value}; # $values may be a lot of different things that often # can't just be printed (e.g. octet string, multivalues) # Win32::OLE::Variant objects, ... # if you work with them, the following line doesn't make # much sense but has to be replaced printf "%s: %s\n", $wantedFields[$i], $value; } # foreach print "--------------\n"; # move "cursor" to next obj to prevent infinite loop $rsObj->MoveNext(); } # while $rsObj->Close(); $connObj->Close();

Best regards,
perl -e "s>>*F>e=>y)\*martinF)stronat)=>print,print v8.8.8.32.11.32"