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