Massyn has asked for the wisdom of the Perl Monks concerning the following question:

#!/fellow/monks.pl

The following piece of code works in being able to return computers defined in my Active Directory, however it only returns the first 1000, which is a little useless. Any idea how I can modify this sucker to show me all entries? Thanks!

use Win32::OLE 'in'; $ADServer = "MyADserver"; $ADsPath = 'LDAP://'.$ADServer.'/OU=MyOU,OU=Organizations,DC=Company,D +C=com'; # get ADO object, set the provider, open the connection $c = Win32::OLE->new("ADODB.Connection"); $c->{Provider} = "ADsDSOObject"; $c->Open("ADSI Provider"); die Win32::OLE->LastError() if Win32::OLE->LastError( ); #This doesnt appear to work.... $c->{Properties}->{"Size Limit"} = 100000; $c->{Properties}->{"Page size"} = 100000; # prepare and then execute the query $rs = $c->Execute("<$ADsPath>;(objectClass=Computer);Name;SubTree"); die Win32::OLE->LastError() if Win32::OLE->LastError( ); until ($rs->EOF){ print $rs->Fields(0)->{Value},"\n"; $cnt++; $rs->MoveNext; } $rs->Close; $c->Close; print "\n"; print "Total : $cnt\n";

Thanks!

|\/| _. _ _  ._
|  |(_|_>_>\/| |
           /

Replies are listed 'Best First'.
Re: 1000 item limit when querying Active Directory
by greenFox (Vicar) on Jun 24, 2004 at 14:51 UTC

    Google is your friend. First result for active directory query returns only 1000 entries says- "There is a resultset size threshold on queries set at the domain level. You can view and change this with ntdsutil". I don't use or have access to active directories so further googling for ntdsutil is left an exercise for the reader :) At least it's not a problem with your script!

    --
    Do not seek to follow in the footsteps of the wise. Seek what they sought. -Basho

Re: 1000 item limit when querying Active Directory
by mojotoad (Monsignor) on Jun 24, 2004 at 19:33 UTC
    These days LDAPv3 servers support control paging as described by RFC 2696.

    I don't know how to interface with that using OLE, but I've done it using Net::LDAP::Control::Paged.

    Good luck,
    Matt