You want to determine if an OU has any child objects or determine how many child objects it contains.
22.214.171.124 Using a graphical user interface
126.96.36.199 Using a command-line interface
> dsquery * "<OrgUnitDN>" -scope base -attr msDS-Approx-Immed-Subordinates
188.8.131.52 Using VBScript
' This code displays the approximate number of child objects for an OU set objOU = GetObject("LDAP://<OrgUnitDN>") objOU.GetInfoEx Array("msDS-Approx-Immed-Subordinates"), 0 WScript.Echo "Number of child objects: " & _ objOU.Get("msDS-Approx-Immed-Subordinates")
The msDS-Approx-Immed-Subordinates attribute is new to Windows Server 2003. It contains the approximate number of direct child objects in a container or organizational unit. Note that this is an approximation and can be off by 10% of the actual total for large containers. The main reason for adding this attribute was to give applications an idea of how many objects a container has so that it can display them accordingly.
msDS-Approx-Immed-Subordinates is a constructed attribute, that is, the value is not actually stored in Active Directory like other attributes. Active Directory computes the value when an application asks for it. In the VBScript solution, the GetInfoEx method had to be called because some constructed attributes, such as this one, are not retrieved when GetInfo or Get is called.
You can accomplish similar functionality with Windows 2000 Active Directory, but you need to perform a onelevel search against the OU and count the number of objects returned. This method is by no means as efficient as using msDS-Approx-Immed-Subordinates in Windows Server 2003.
5.8.4 See Also