' ------------------------------------------------------------------------- ' From the book Inside Active Directory, ISBN 0-201-61621-1 ' Copyright (C) 2002 by Addison-Wesley ' Script by Sakari Kouti (see http://www.kouti.com) ' You have a royalty-free right to use, modify, reproduce and distribute ' this script (and/or any modified version) in any way you find useful, ' provided that you agree that Addison-Wesley or Sakari Kouti has no ' warranty, obligations or liability for the script. If you modify ' the script, you must retain this copyright notice. ' ------------------------------------------------------------------------- Option Explicit Const ADSTYPE_OCTET_STRING = 8 Const ADSTYPE_LARGE_INTEGER = 10 Const ADSTYPE_NT_SECURITY_DESCRIPTOR = 25 Dim objDSE, objADObject, i, strName, intGap Dim objPropEntry, varPropValue, objPropValue, objLargeInt Set objDSE = GetObject("LDAP://rootDSE") Set objADObject = GetObject("LDAP://CN=Guest,CN=Users," & _ objDSE.Get("defaultNamingContext")) objADObject.GetInfo WScript.Echo "Number of properties in the property cache: " & _ objADObject.PropertyCount & vbCrLf For i = 0 To objADObject.PropertyCount - 1 Set objPropEntry = objADObject.Item(i) strName = objPropEntry.Name & " (" & objPropEntry.ADsType & ")" For Each objPropValue In objPropEntry.Values Select Case objPropEntry.ADsType Case ADSTYPE_NT_SECURITY_DESCRIPTOR varPropValue = "some security descriptor" Case ADSTYPE_OCTET_STRING varPropValue = "some octet string" Case ADSTYPE_LARGE_INTEGER Set objLargeInt = _ objPropValue.GetObjectProperty(objPropEntry.ADsType) varPropValue = _ objLargeInt.HighPart * 2^32 + objLargeInt.LowPart Case Else varPropValue = _ objPropValue.GetObjectProperty(objPropEntry.ADsType) End Select intGap = 25 - Len(strName) If intGap < 1 Then intGap = 1 WScript.Echo strName & String(intGap, " ") & varPropValue strName = "" Next Next