作成 2010.01.07
更新 2010.01.07
更新 2010.01.07
VBScript でスキーマの一覧取得2
このサンプルは指定したオブジェクトに設定/取得可能な属性の一覧を表示します。メッセージがたくさん出るので cscript で実行してください。
Option Explicit Const HideNullValue = True Dim adsUser, sch, data Set adsUser = GetObject("LDAP://CN=Administrator,CN=Users,DC=example,DC=lan") Set sch = GetObject(adsUser.Schema) WScript.Echo sch.name WScript.Echo "----- MandatoryProperties -----" For Each data in sch.MandatoryProperties EnumerateProperties data Next WScript.Echo "----- OptionalProperties -----" For Each data in sch.OptionalProperties EnumerateProperties data Next Sub EnumerateProperties(adsProp) Dim adsProperty Dim wStr, propData On Error Resume Next Set adsProperty = GetObject("LDAP://Schema/" & adsProp) If Err.Number <> 0 Then WScript.Echo vbTab & "null" Exit Sub End If On Error Goto 0 wStr = adsProp & vbTab & adsProperty.Syntax & vbTab If adsProperty.MultiValued Then wStr = wStr & "MultiValued" & vbTab On Error Resume Next propData = adsUser.GetEx(adsProp) If Err.Number <> 0 Then On Error Goto 0 If HideNullValue Then Exit Sub wStr = wStr & "(null)" Else On Error Goto 0 wStr = wStr & TypeName(propData(0)) & "(" & (UBound(propData)+1) & ")" End If Else wStr = wStr & "SingleValued" & vbTab On Error Resume Next propData = adsUser.Get(adsProp) If Err.Number <> 0 Then On Error Goto 0 Set propData = Nothing On Error Resume Next ' 64bit整数など、Getメソッドで取得できないオブジェクトはこれで取得する propData = adsUser.GetEx(adsProp) If Err.Number <> 0 Then On Error Goto 0 If HideNullValue Then Exit Sub wStr = wStr & "(null)" Else On Error Goto 0 wStr = wStr & TypeName(propData(0)) & "(" & (UBound(propData)+1) & ")" End If Else On Error Goto 0 If VarType(propData) >= vbArray Then wStr = wStr & TypeName(propData) & "(" & (Ubound(propData)+1) & ")" Else wStr = wStr & TypeName(propData) End If End If End If WScript.Echo wStr End Sub参考
ActiveDirectorySchemaClass クラス | IADsProperty Interface | IADs インターフェース | VBScript でスキーマの一覧取得