Here is a little script I put together for one of our developers here at Aerojet. Feel free to use, abuse, change, tweak, fix, etc.
Here is a zip file of the script: list-all-attributes.zip
'* 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





10 Comments until now
Thanks for the script!
There’s a typo in the file name in the Usage section though
Most impressive! Thanks mate.
works well, thanks!
[...] List All User Object Attributes in Active Directory Schema.. Whew! Um script ASP para listar atributos ActiveDirectory de um usuário ou de um contexto. (tags: ldap) [...]
A great help and works well! Thanks much!
You probally already know this but
by adding a few lines you can ouput this to a file:
‘* 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
‘
‘ ****** add code *********
Set WSHShell = CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
objpath = WshShell.SpecialFolders(“Desktop”)
Set objFolder = objFSO.GetFolder(objpath)
For Each objFile In objFolder.files
If objFile.Name = “users.txt” Then
objFile.Delete True
End If
Next
Set objfile = objFSO.CreateTextFile(objpath&”\ad.csv”, True)
set objfile = nothing
Set objfile = objFSO.OpenTextFile(objpath&”\ad.csv”, 8, True)
‘ ****** end add *********
Dim objUserClass : Set objUserClass = GetObject(“LDAP://schema/user”)
Dim objSchemaClass : Set objSchemaClass = GetObject(objUserClass.Parent)
‘ ****** change code – from *********
‘wscript.echo chr(34) & “Mandatory” & chr(34) & “,” & _
‘ chr(34) & “Name” & chr(34) & “,” & _
‘ chr(34) & “Syntax” & chr(34) & “,” & _
‘ chr(34) & “Single/Multi Valued” & chr(34)
‘ ****** change code – to *********
writeme = chr(34) & “Mandatory” & chr(34) & “,” & chr(34) & “Name” & chr(34) & “,” & chr(34) & “Syntax” & chr(34) & “,” & chr(34) & “Single/Multi Valued” & chr(34)
objfile.writeline(writeme)
‘ ****** end change code *********
Call GetAttributes(objUserClass.MandatoryProperties,objSchemaClass,True)
Call GetAttributes(objUserClass.OptionalProperties,objSchemaClass,False)
Private Sub GetAttributes(x,y,z)
Dim strAttribute
For Each strAttribute in x
Dim strOut : strOut = “”
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
Dim objAttribute : Set objAttribute = y.GetObject(“Property”, strAttribute)
strOut = strOut & chr(34) & objAttribute.Syntax & chr(34) & “,”
If objAttribute.MultiValued Then
strOut = strOut & chr(34) & “Multi” & chr(34)
Else
strOut = strOut & chr(34) & “Single” & chr(34)
End If
‘ ****** change code – from *********
‘ wscript.echo strOut
‘ ****** change code – to *********
objfile.writeline(strOut)
‘ ****** end section *********
strOut = Empty
Next
Set objAttribute = Nothing
strAttribute = Empty
End Sub
‘ ****** add code *********
Set objDomain = Nothing
objfile.close
set objfile = nothing
set objfso = nothing
Wscript.Echo “AD file created, DONE”
‘ ****** end add *********
And by the way GREAT SCRIPT, THANK YOU !!!
Thanks Mike. Glad you found it useful.
For these, I typically just use: cscript /nologo script.vbs > output.csv
I ran the script and got an compilation error, “Sub expected”. I ran it on a domain computer with an administrative user account. Is this supposed to be run from the Domain Controller itself?
Add your Comment!