Is there a limit on the number of record when doing a AD query with LDAP?
I am getting only 1000 records from this script. We have more than 2000+ users 
in our AD.
Any idea how to increase the limit to get everything?


use Win32::OLE;
my $RootDSE = Win32::OLE->GetObject("LDAP://RootDSE");


$dc = $RootDSE->Get("DnsHostName");
print "$dc\n";
query_ldap("<LDAP://" . $dc . 
">;(&(objectclass=User)(manager=*));displayname,distinguishedname;subtree",$objects);


print "recordcount = ".$objects->{RecordCount}."\n";
while (!$objects->{EOF}) {
  getattributes($dc,$objects->Fields("distinguishedname")->{Value});
  $objects->MoveNext();
}
sub query_ldap {
  my $ldap_query = $_[0];
  my $error_num;
  my $error_name;
  my $RS;
  my $Conn = Win32::OLE->new("ADODB.Connection");
  if (Win32::OLE->LastError() != 0) {
    print "Failed creating ADODB.Connection object 
(".Win32::OLE->LastError().")\n   -> $ldap_query\n";
    return 0;
  }
  $Conn->{'Provider'} = "ADsDSOObject";
  if (Win32::OLE->LastError() != 0) {
    print "Failed setting ADODB.Command Provider 
(".Win32::OLE->LastError().")\n   -> $ldap_query\n";
    return 0;
  }
  $Conn->{Open} = "Perl Active Directory Query";
  my $Cmd = Win32::OLE->new("ADODB.Command");
  if (Win32::OLE->LastError() != 0) {
    print "Failed creating ADODB.Command object 
(".Win32::OLE->LastError().")\n   -> $ldap_query\n";
    return 0;
  }
  $Cmd->{CommandText} = $ldap_query;
  $Cmd->{Properties}->{"Page Size"} = 99;
  $Cmd->{ActiveConnection} = $Conn;
  $RS = $Cmd->Execute();
  if (Win32::OLE->LastError() != 0) {
    print "Failed Executing ADODB Command object 
(".Win32::OLE->LastError().")\nExecuting ADODB Command -> $ldap_query\n";
    return 0;
  } else {
    $_[1] = $RS;
    return 1;
  }
}
sub getattributes  {
  my $dc = $_[0];
  my $dn = $_[1];
  my $adsuser = Win32::OLE->GetObject("LDAP://$dc/$dn") || die ("Can't find 
user: ".Win32::OLE->LastError()."\n");
  print "$adsuser->{cn}\t"; 
  print "$adsuser->{EmailAddress}\t";
  print "$adsuser->{department}\t";
  print "$adsuser->{PhysicalDeliveryOfficeName}\t";
  print "  Manager: $adsuser->{Manager}\n";
}


      
_______________________________________________
Perl-Win32-Admin mailing list
Perl-Win32-Admin@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to