Directory Services

Domains

The available properties of an ADSI Domain object vary depending on what namespace the object resides in. The following code examples can be used to determine what properties a given domain supports by looking at the Domain object's schema class object. A schema class object contains definitions of all the methods and properties supported by an object under a particular namespace provider. The ADsPath to an object's schema class object is stored in the Schema property. The Schema property is available on any ADSI object, not just domains.

A schema class object must be bound to retrieve useful data from it. The following code example shows can be used to bind to the schema class object for a particular domain.

Set myDomain = GetObject("WinNT://mydomain")
Set mySchemaClass = GetObject(myDomain.Schema)

When the schema class object is bound, its properties offer data about an object's supported properties, as well as its relation to other objects within its namespace. The schema class object has the following useful properties.

Property Description
Container A Boolean value, TRUE if the object is a container, FALSE if not.
Containment If the object is a container, the Containment property holds a list of all the types of ADSI objects this particular object can contain.
MandatoryProperties An array of all the properties that must be set for this object to be written to storage.
OptionalProperties An array of this object's optional properties.

The following code example displays the properties that are available in a given WinNT domain.

Dim myDomain
Dim mySchemaClass
Dim member

Set myDomain = GetObject("WinNT://MYDOMAIN")
Set mySchemaClass = GetObject(myDomain.Schema)

WScript.Echo "Properties for the " & myDomain.Name & " object"
WScript.Echo

If mySchemaClass.Container Then
	WScript.Echo myDomain.Name & " may contain the following objects:"
	For Each member In mySchemaClass.Containment
		WScript.Echo "	" & member
	Next
Else
	WScript.Echo myDomain.Name & " is not a container."
End If
WScript.Echo

WScript.Echo "Mandatory properties:"
For Each member In mySchemaClass.MandatoryProperties
	WScript.Echo "	" & member
Next
WScript.Echo

WScript.Echo "Optional properties:"
For Each member In mySchemaClass.OptionalProperties
	WScript.Echo "	" & member
Next

The following code example produces output similar to the following.

Properties for the MYDOMAIN object

MYDOMAIN may contain the following objects:
	Computer
	User
	Group

Mandatory properties:

Optional properties:
	MinPasswordLength
	MinPasswordAge
	MaxPasswordAge
	MaxBadPasswordsAllowed
	PasswordHistoryLength
	AutoUnlockInterval
	LockoutObservationInterval

Be aware that this code example may be used to retrieve the properties of any ADSI object, not just domains. Replace the path in the first GetObject call with the path to the object whose properties you are interested in.