Find DCs and GCs in a site (Perl)
This code can be found in
Chapter 3 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 prints the domain controllers in a site and then
# prints the global catalog servers in the site
# ---------------------------------------------------------------
# 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 $strSite = "<SiteName>"; # e.g. Default-First-Site-Name
my $strForest = "<ForestDNSName>"; # e.g. rallencorp.com
# ------ END CONFIGURATION ---------
use Win32::OLE;
$Win32::OLE::Warn = 3;
my $objRootDSE = Win32::OLE->GetObject("LDAP://" . $strForest . "/RootDSE");
my $strADsPath = "<LDAP://cn=servers,cn=" . $strSite . ",cn=sites," . $objRootDSE->Get("configurationNamingContext") . ">;";
my $strFilter = "(objectcategory=ntdsdsa);";
my $strAttrs = "distinguishedName;";
my $strScope = "subtree";
print "Domain controllers in $strSite:\n";
my $objConn = Win32::OLE->CreateObject("ADODB.Connection");
$objConn->{Provider} = "ADsDSOObject";
$objConn->Open;
my $objRS = $objConn->Execute($strADsPath . $strFilter . $strAttrs . $strScope);
$objRS->MoveFirst;
while (not $objRS->eof) {
my $objNTDS = Win32::OLE->GetObject("LDAP://" . $objRS->Fields(0)->Value);
my $objServer = Win32::OLE->GetObject( $objNTDS->Parent );
print " ", $objServer->Get("dNSHostName"),"\n";
$objRS->MoveNext;
}
# Global Catalog filter
$strFilter = "(&(objectcategory=ntdsdsa)(options=1));";
print "\n";
print "Global Catalogs in " . $strSite . ":\n";
my $objRS = $objConn->Execute($strADsPath . $strFilter . $strAttrs . $strScope);
$objRS->MoveFirst;
while (not $objRS->eof) {
my $objNTDS = Win32::OLE->GetObject("LDAP://" . $objRS->Fields(0)->Value);
my $objServer = Win32::OLE->GetObject( $objNTDS->Parent );
print " ", $objServer->Get("dNSHostName"),"\n";
$objRS->MoveNext;
}
|
This code has been viewed 1431 times.
|
New from the creators of TechTasks.com:
StatSheet.com
|