Scripts to manage Active Dorectory Sites and Subnets
Creating an Active Directory SiteCreating an Active Directory Site Link
Creating an Active Directory Subnet
Deleting an Active Directory Subnet
Determining if a Domain Controller is in a Site
Determining the Protocols Over Which a Bridgehead Server Replicates
Enumerating All Domain Controllers
Creating an Active Directory Site
Creates an Active Directory site and sets the site link for the new site.
strSiteRDN = "cn=Ga-Atl-Sales" strSiteLinkRDN = "cn=DEFAULTIPSITELINK" strSiteLinkType = "IP" ' Valid values: "IP" or "SMTP" Const ADS_PROPERTY_APPEND = 3 Set objRootDSE = GetObject("LDAP://RootDSE") strConfigurationNC = objRootDSE.Get("configurationNamingContext") strSitesContainer = "LDAP://cn=Sites," & strConfigurationNC Set objSitesContainer = GetObject(strSitesContainer) Set objSite = objSitesContainer.Create("site", strSiteRDN) objSite.SetInfo Set objLicensingSiteSettings = objSite.Create("licensingSiteSettings", _ "cn=Licensing Site Settings") objLicensingSiteSettings.SetInfo Set objNtdsSiteSettings = objSite.Create("nTDSSiteSettings", _ "cn=NTDS Site Settings") objNtdsSiteSettings.SetInfo Set objServersContainer = objSite.Create("serversContainer", "cn=Servers") objServersContainer.SetInfo strSiteLinkPath = "LDAP://" & strSiteLinkRDN & ",cn=" & strSiteLinkType & _ ",cn=Inter-Site Transports,cn=Sites," & strConfigurationNC Set objSiteLink = GetObject(strSiteLinkPath) objSiteLink.PutEx ADS_PROPERTY_APPEND, "siteList", _ Array(objSite.Get("distinguishedName")) objSiteLink.SetInfo
Creating an Active Directory Site Link
Creates an Active Directory site link.
strSite1Name = "Ga-Atl-Sales" strSite2Name = "Wa-Red-Sales" strSiteLinkRDN = "cn=[" & strSite1Name & "][" & strSite2Name & "]" intCost = 100 intReplInterval = 60 strDescription = "[" & strSite1Name & "][" & strSite2Name & "]" Const ADS_PROPERTY_UPDATE = 2 Set objRootDSE = GetObject("LDAP://RootDSE") strConfigurationNC = objRootDSE.Get("configurationNamingContext") strSite1DN = "cn=" & strSite1Name & ",cn=Sites," & strConfigurationNC strSite2DN = "cn=" & strSite2Name & ",cn=Sites," & strConfigurationNC Set objInterSiteTransports = GetObject("LDAP://" & _ "cn=IP,cn=Inter-Site Transports,cn=Sites," & strConfigurationNC) Set objSiteLink = objInterSiteTransports.Create("siteLink", strSiteLinkRDN) objSiteLink.Put "cost", intCost objSiteLink.Put "replInterval", intReplInterval objSiteLink.Put "description", strDescription objSiteLink.PutEx ADS_PROPERTY_UPDATE, "siteList", _ Array(strSite1DN, strSite2DN) objSiteLink.SetInfo
Creating an Active Directory Subnet
Creates an Active Directory subnet.
strSubnetRDN = "cn=192.168.1.0/26" strSiteObjectRDN = "cn=Ga-Atl-Sales" strDescription = "192.168.1.0/255.255.255.192" strLocation = "USA/GA/Atlanta" Set objRootDSE = GetObject("LDAP://RootDSE") strConfigurationNC = objRootDSE.Get("configurationNamingContext") strSiteObjectDN = strSiteObjectRDN & ",cn=Sites," & strConfigurationNC strSubnetsContainer = "LDAP://cn=Subnets,cn=Sites," & strConfigurationNC Set objSubnetsContainer = GetObject(strSubnetsContainer) Set objSubnet = objSubnetsContainer.Create("subnet", strSubnetRDN) objSubnet.Put "siteObject", strSiteObjectDN objSubnet.Put "description", strDescription objSubnet.Put "location", strLocation objSubnet.SetInfo
Deleting an Active Directory Subnet
Deletes an Active Directory subnet.
strSubnetCN = "cn=192.168.1.0/26" Set objRootDSE = GetObject("LDAP://RootDSE") strConfigurationNC = objRootDSE.Get("configurationNamingContext") strSubnetsContainer = "LDAP://cn=Subnets,cn=Sites," & strConfigurationNC Set objSubnetsContainer = GetObject(strSubnetsContainer) objSubnetsContainer.Delete "subnet", strSubnetCN
Determining if a Domain Controller is in a Site
Checks if a domain controller is in a specific Active Directory site.
strDcName = "atl-dc-01" strSiteName = "ga-atl-sales" Set objADSysInfo = CreateObject("ADSystemInfo") strDcSiteName = objADSysInfo.GetDCSiteName(strDcName) If UCase(strSiteName) = UCase(strDcSiteName) Then WScript.Echo "TRUE: " & strDcName & " is in site " & strSiteName Else WScript.Echo "FALSE: " & strDcName & " is NOT in site " & strSiteName End If
Determining the Protocols Over Which a Bridgehead Server Replicates
Reads the bridgeheadTransportList from a domain controller in a site.
On Error Resume Next Set objServer = GetObject _ ("LDAP://CN=SEA-DC-01,CN=Servers,CN=Default-First-Site-Name," & _ " CN=Sites,CN=Configuration,DC=fabrikam,DC=com") dnBHTList = objServer.GetEx("bridgeheadTransportList") WScript.Echo "Bridge Head Transport List:" WScript.Echo "This multi-valued attribute lists the protocol" & _ "transports over which this BridgeHead Server replicates" For Each dnValue in dnBHTList WScript.Echo dnValue Next
Enumerating All Domain Controllers
Returns a list of all the domain controllers in the fabrikam.com domain.
Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCOmmand.ActiveConnection = objConnection objCommand.CommandText = _ "Select distinguishedName from 'LDAP://cn=Configuration,DC=fabrikam,DC=com' " _ & "where objectClass='nTDSDSA'" objCommand.Properties("Page Size") = 1000 objCommand.Properties("Timeout") = 30 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Cache Results") = False Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF Wscript.Echo "Computer Name: " & objRecordSet.Fields("distinguishedName").Value objRecordSet.MoveNext Loop