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から出せばいいのですが、だれか原因分かりませんかいのう…
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から出せばいいのですが、だれか原因分かりませんかいのう…
0 コメント:
コメントを投稿