> -----Original Message-----
> From: perl-win32-admin-boun...@listserv.activestate.com [mailto:perl-
> win32-admin-boun...@listserv.activestate.com] On Behalf Of Gomes, Rich
> Sent: Thursday, April 21, 2011 11:18 AM
> To: perl-win32-admin@listserv.ActiveState.com
> Subject: AD Page Size help
> 
> I know this has been talked about a lot but I cannot seem to get my
> script to work.
> I am trying to not hit the LDAP search limit but cannot seem to get the
> PageSize line correct
> 
> 
> Any thoughts?

I never tried to do paged queries via Win32::OLE, instead I used the
following modules:

use Net::LDAP;
use Net::LDAP::Control::Paged;
use Net::LDAP::Constant qw( LDAP_CONTROL_PAGED );

calls like this worked for me:

  my( $ldap ) = Net::LDAP->new( $ldapHost ) or die "$@";

  .
  .
  .

  $mesg = $ldap->bind( $ID, password => $PW );

  $page = Net::LDAP::Control::Paged->new( size => PAGE_SIZE );

  @args = (
            Sizelimit => LDAP_SIZELIMIT,
            scope     => LDAP_SCOPE,
            base      => &makeBaseDN,
            filter    => LDAP_FILTER,
            attrs     => [ LDAP_ATTR ],
            control   => [ $page ],
  );

  while( 1 ) {
    $mesg = $ldap->search( @args );

    last if ( $mesg->code && $mesg->code != 4 );
    foreach my $entry ( $mesg->entries ) {
      my $dn = $entry->dn();
      foreach my $attr ( $entry->attributes ) {
        my $value = $entry->get_value( $attr );
# do something with $value
      }
    }

    $objCount += $mesg->count;

    last unless my( $resp ) = $mesg->control( LDAP_CONTROL_PAGED );
    last unless $cookie = $resp->cookie;
    $page->cookie( $cookie );
  }

  if ( $cookie ) {
    printf $tee "INFO: query interrupted: %s: %s!\n", $mesg->code,
$mesg->error;
    $page->cookie( $cookie );
    $page->size( 0 );
    $ldap->search( @args );

    foreach my $entry ( $mesg->entries ) {
      my $dn = $entry->dn();
      foreach my $attr ( $entry->attributes ) {
        my $value = $entry->get_value( $attr );
# do something with $value
      }
    }
    $objCount += $mesg->count;
  }

  $mesg = $ldap->unbind;  # take down session


> _______________________________________________________________________
> ______
> 
> my $strDomainDN = "DC=mydomain,DC=com";
> use Win32::OLE qw(in);
> 
> 
> $Win32::OLE::Warn = 3;
> my $strBase   =  "<LDAP://" . $strDomainDN . ">;";
> 
> 
> my $strFilter = "(&(objectclass=user)(objectcategory=person));";
> my $strAttrs  = "name;";
> my $strAttrs  = "distinguishedName;";
> my $strScope  = "subtree";
> 
> my $objConn = Win32::OLE->CreateObject("ADODB.Connection");
> $objConn->{Provider} = "ADsDSOObject";
> $objConn->Open;
> 
> $objConn->{Properties}->{"Page Size"} = 100;
> 
> my $objRS = $objConn->Execute($strBase . $strFilter . $strAttrs .
> $strScope);
> $objRS->MoveFirst;
> while (not $objRS->EOF) {
>     print $objRS->Fields(0)->Value,"\n";
>     $objRS->MoveNext;
> }
> 
> _______________________________________________________________________
> ________
> 
> 
> 
> _______________________________________________
> Perl-Win32-Admin mailing list
> Perl-Win32-Admin@listserv.ActiveState.com
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Attachment: smime.p7s
Description: S/MIME cryptographic signature

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

Reply via email to