作成 2010.03.12
更新 2010.03.13
VBScript で OpenLDAP へ LDAPS で接続する
接続ポートは ADS_PLAIN_TEXT で TCP 389、ADS_USE_SSL で TCP 636 へ接続されます。
接続の高速化のために ADS_SERVER_BIND を指定し、問い合わせの高速化のために ADS_FAST_BIND と ADS_NO_REFERRAL_CHASING を指定しています。
なお、実行するコンピューターはドメインに参加している必要があります。
Option Explicit
' http://msdn.microsoft.com/en-us/library/aa772247.aspx
Const ADS_PLAIN_TEXT = &H0
Const ADS_USE_SSL = &H2
Const ADS_FAST_BIND = &H20
Const ADS_SERVER_BIND = &H200
Const ADS_NO_REFERRAL_CHASING = &H400
Dim strPath, objLdap, strBind, strPassword, objMyObject
Dim objConnection, objCommand, objRS
Dim intADSIFlag

strPath = "LDAP://ldap.upken.jp/DC=upken,DC=jp"
strBind = "cn=proxy,dc=upken,dc=jp"
strPassword = "bindpassword"

' for Windows Vista, 7
' intADSIFlag = ADS_USE_SSL Or ADS_FAST_BIND Or ADS_SERVER_BIND Or ADS_NO_REFERRAL_CHASING

' for Windows XP
intADSIFlag = ADS_USE_SSL Or ADS_FAST_BIND Or ADS_SERVER_BIND

' 特定のオブジェクトへ接続する
Set objLdap = GetObject("LDAP:")
' Set objMyObject = objLdap.OpenDSObject(strPath, strAdmin, strPassword, ADS_PLAIN_TEXT)
Set objMyObject = objLdap.OpenDSObject(strPath, strBind, strPassword, intADSIFlag)
WScript.Echo objMyObject.Get("o")

' オブジェクトを検索する
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Properties("User ID") = strBind
objConnection.Properties("Password") = strPassword
objConnection.Properties("Encrypt Password") = True
objConnection.Properties("ADSI Flag") = intADSIFlag
objConnection.Open "ADs Provider"
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page size") = 100
objCommand.CommandText = "<" & strPath & ">;(objectClass=*);ADsPath;subtree"
Set objRS = objCommand.Execute
Do Until objRS.EOF
  WScript.Echo objRS.Fields("ADsPath").Value
  objRS.MoveNext
Loop
WScript.Echo "end"

©2004-2017 UPKEN IPv4