Display OUs (Perl)

This code can be found in Chapter 5 of Active Directory Cookbook, 2nd edition

Purchase XP Cookbook or Networking Recipes for only $25 plus shipping! While supplies last.

Find out how to download all of the Perl code from this site.

# This Perl code recursively displays all container and organizationalUnit
# $objects under a specified base.  Using "" for the second parameter means
# that there will be no indention for the first level of $objects displayed.

# ---------------------------------------------------------------
# Adapted from VBScript code contained in the book:
#      "Active Directory Cookbook" by Robbie Allen
# Publisher: O'Reilly and Associates
# ISBN: 0-596-00466-4
# Book web site: http://rallenhome.com/books/adcookbook/code.html
# ---------------------------------------------------------------
use Win32::OLE 'in';
$Win32::OLE::Warn = 3;
DisplayObjects("LDAP://<DomainDN>", "");

# DisplayObjects takes the ADsPath of the $object to display 
# child $objects for and the number of spaces (indention) to
# use when printing the first parameter
sub DisplayObjects {
my ($strADsPath, $strSpace) = @_;

   my $objObject = Win32::OLE->GetObject($strADsPath);
   print "$strSpace $strADsPath\n";
   $objObject->{Filter} = ["container","organizationalUnit"];
   foreach my $objChildObject (in $objObject) {
      DisplayObjects($objChildObject->ADsPath, $strSpace . " ");
   } 
}

This code has been viewed 1876 times.

New from the creators of TechTasks.com: StatSheet.com