11.20. Finding the Site for a Client
Problem
You want to find which site a client computer is in.
Solution
Using a command-line interface
In the following command,
replace
<HostName>
with the name of the host
you want to find the site for:
> nltest /server:<HostName
> /DsGetSite
Using VBScript
Although you cannot use it directly from a scripting language like
VBScript, Microsoft provides a DsGetSiteName
method that can be used by languages, such as Visual Basic and C++,
to retrieve site coverage information. In fact, the
nltest
command shown in the CLI solution is a
wrapper around this method.
The IADsTool interface provides a wrapper around this method:
set objIadsTools = CreateObject("IADsTools.DCFunctions")
strSite = objIadsTools.DsGetSiteName("<HostName
>")
Wscript.Echo "Site: " & strSite
Discussion
Each domain controller has a server
object that is
contained with a site. Clients are different—they are
associated with a site based on their IP address and the
corresponding subnet that it matches is in the
Subnets
container. The client site information is
important because it determines the domain controller the client
authenticates with. If the client’s IP address does
not match a subnet range of any of the subnets stored in Active
Directory, it will randomly pick a site to use, which means it could
authenticate against any domain controller in the domain. See Recipe 11.21 for a way to hardcode the site
association for a client.
See Also
Recipe 11.21 for forcing a host to a particular site, ...
Get Active Directory Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.