Here is a little script I put together for one of our developers here at work. Feel free to use, abuse, change, tweak, fix, etc.
'* Script name: List All Attributes.vbs
'* Created on: 01/28/2009
'* Author: Andrew J Healey
'* Purpose: Exports all attributes from the user object type within
'* the Active Directory schema.
'* Usage: cscript /nologo "list all attributes.vbs" > Attributes.csv
'* History: Andrew J Healey 01/28/2009
'* - Created script
'
Option Explicit
'Declarations
Dim objUserClass : Set objUserClass = GetObject("LDAP://schema/user")
Dim objSchemaClass : Set objSchemaClass = GetObject(objUserClass.Parent)
wscript.echo chr(34) & "Mandatory" & chr(34) & "," & _
chr(34) & "Name" & chr(34) & "," & _
chr(34) & "Syntax" & chr(34) & "," & _
chr(34) & "Single/Multi Valued" & chr(34)
Call GetAttributes(objUserClass.MandatoryProperties,objSchemaClass,True)
Call GetAttributes(objUserClass.OptionalProperties,objSchemaClass,False)
Private Sub GetAttributes(x,y,z)
Dim strAttribute
'Loop through all attributes
For Each strAttribute in x
Dim strOut : strOut = ""
'Compares whether the attribute is mandatory or optional
'Prints whether mandatory/optional and name of attribute
If z = True then
strOut = strOut & chr(34) & "Yes" & chr(34) & "," & _
chr(34) & strAttribute & chr(34) & ","
Else
strOut = strOut & chr(34) & "No" & chr(34) & "," & _
chr(34) & strAttribute & chr(34) & ","
End If
'Get the attributes syntax: i.e. Integer, String, NumericString, etc.
Dim objAttribute : Set objAttribute = y.GetObject("Property", strAttribute)
strOut = strOut & chr(34) & objAttribute.Syntax & chr(34) & ","
'Determines whether column holds multi or single values
If objAttribute.MultiValued Then
strOut = strOut & chr(34) & "Multi" & chr(34)
Else
strOut = strOut & chr(34) & "Single" & chr(34)
End If
'Print string to screen. Each line its own CSV.
wscript.echo strOut
strOut = Empty
Next
Set objAttribute = Nothing
strAttribute = Empty
End Sub