RSS

LDAP Query with ADODB Memorandom

AD 管理よもやま話。

PowerShell の方が便利だけど、広範囲にやりたいならまだWSHのがいい気がする。
ただ、いくつか要注意事項が。

VBSのADODB Object でLDAP クエリを投げる場合、クエリを投げる対象のサーバーに何らかの理由で通信できない場合、(NTDS にはオブジェクトはある)、実行時エラーが発生し、しかもサブシーケンスかFunction内ではこのエラーがキャッチできないという誠に意味不明な仕様。


        ’↓Connection
        strLDAPcon = strProtocol & objComputer.dNSHostName & "/" & strGrpDom
   
        ’ただの出力
        fout.Write("Searching DC Name : " & objComputer.dNSHostName & "," & searchedNC & ",")
        WScript.Echo Chr(9) & "Searching DC Name : " & objComputer.dNSHostName & "," & searchedNC

        'コマンドの生成
        strScope = "subtree"   
        strAttributes = "sAMAccountName, ADsPath, distinguishedName"
        strFilter = "(&(objectCategory=Group)(objectClass=group)(cn=" & strGrp  &  "))"
        cmd = "<" & strLDAPcon & ">;" & strFilter & ";" & strAttributes & ";" & strScope
   
        GCCommand.CommandText = cmd





       
        ’↓この時点で実行時エラー、On Error でスキップはできるけど、Err のキャッチもできない。
        Set objResult = GCCommand.Execute



        ’この処理にいかない
        If Err.Number<> 0 Then
            WScript.Echo "Error in search! (Group Not Found)"
            WScript.Quit(1)
        Else
            WScript.Echo "Successfully retrieved the groups from AD or GC."
        End If

うーん、Subから出せばいいのですが、だれか原因分かりませんかいのう…

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 コメント:

コメントを投稿