Find replica servers (Perl)
This code can be found in
Chapter 18 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 displays the DN of each domain controller's
# nTDSDSA $object that is a replica server for the
# specified app partition
# ---------------------------------------------------------------
# Adapted from VBScript code contained in the book:
# "Active Directory Cookbook" by Robbie Allen
# ISBN: 0-596-00466-4
# ---------------------------------------------------------------
# ------ SCRIPT CONFIGURATION ------
# Fully qualified DNS name of app partition
my $strAppPart = "<AppPartitionFQDN>"; # e.g. apps.rallencorp.com
# ------ END CONFIGURATION ---------
use Win32::OLE 'in';
$Win32::OLE::Warn = 3;
my $objRootDSE = Win32::OLE->GetObject("LDAP://RootDSE");
my $strBase = "<LDAP://cn=Partitions," .
$objRootDSE->Get("ConfigurationNamingContext") . ">;";
my $strFilter = "(&(objectcategory=crossRef)(dnsRoot=" . $strAppPart . "));";
my $strAttrs = "msDS-NC-Replica-Locations;";
my $strScope = "onelevel";
my $objConn = Win32::OLE->CreateObject("ADODB.Connection");
$objConn->{Provider} = "ADsDSOObject";
$objConn->Open;
my $objRS = $objConn->Execute($strBase . $strFilter . $strAttrs . $strScope);
if ($objRS->RecordCount != 1) {
print "Did not find a match for application partition $strAppPart\n";
exit;
}
else {
$objRS->MoveLast;
if ($objRS->Fields("msDS-NC-Replica-Locations")->Properties->Count > 0) {
print "There are no replica servers for app partition $strAppPart\n";
}
else {
print "Replica servers for app partition $strAppPart:\n";
foreach my $strNTDS (in $objRS->Fields("msDS-NC-Replica-Locations")->Value) {
print " $strNTDS\n";
}
}
}
|
This code has been viewed 2093 times.
|
New from the creators of TechTasks.com:
StatSheet.com
|