Modify default dynamic object ttl (Perl)

This code can be found in Chapter 4 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 modifies the default TTL setting for dynamic $objects in a forest

# ---------------------------------------------------------------
# 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
# ---------------------------------------------------------------

# ------ SCRIPT CONFIGURATION ------
my $strNewValue   = 172800;

#Could be DynamicObjectMinTTL instead if (you wanted to my that instead
my $strTTLSetting = "DynamicObjectDefaultTTL";
# ------ END CONFIGURATION ---------
use Win32::OLE 'in';
$Win32::OLE::Warn = 3;
my $ADS_PROPERTY_APPEND = 3;
my $ADS_PROPERTY_DELETE = 4;

my $objRootDSE = Win32::OLE->GetObject("LDAP://RootDSE");
my $objDS = Win32::OLE->GetObject("LDAP://CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration," .
                      $objRootDSE->Get("rootDomainNamingContext") );
foreach my $strVal (in $objDS->Get("msDS-Other-Settings") ) {
   if ($strVal =~ /$strTTLSetting\=/i) {
      print "Deleting $strVal\n";
      $objDS->PutEx($ADS_PROPERTY_DELETE, "msDS-Other-Settings", [$strVal]);
      $objDS->SetInfo;
   }
}

print "Setting $strTTLSetting = $strNewValue\n";
$objDS->PutEx($ADS_PROPERTY_APPEND,"msDS-Other-Settings", [$strTTLSetting . "=" . $strNewValue]);
$objDS->SetInfo;

This code has been viewed 1144 times.

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