作成 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 でスキーマの一覧取得


©2004-2017 UPKEN IPv4