我有一个小脚本(VBS)来更改所有用户的网站属性:
dim objOU, objUser
objOU="OU=Users,DC=mysociety,DC=local"
Set objOU = GetObject("LDAP://" & objOU)
on error resume next
For each objUser in objOU
If objUser.Class="user" Then
Set objUser = GetObject("LDAP://" & objUser.distinguishedName)
objUser.Put "wWWHomePage", "http://mysite.mysociety.local/Person.aspx?accountname=mysociety\" & objUser.mailNickname
objUser.setInfo
if err.number <> 0 then
wscript.echo "Error processing " & objUser.givenName & ":" & err.number & ", " & err.Description
err.clear
end if
End if
Next
所以我的问题是,如果我将objOU精确到最深的目录,它就能完美运行。但它不是一个递归脚本,并且由于子目录,使用此代码它不起作用。 我是VBS的初学者,你能帮我把这个脚本递归吗?
先谢谢你,请原谅我的英语不好
答案 0 :(得分:0)
使用线程可以非常有效地完成此任务。在一个线程中,执行搜索
其中,基础对象是目录信息树(DIT)中的所有点
存储必须修改的条目。使用whole subtree
作为搜索范围和a
过滤器将搜索结果缩小到仅需要修改的条目。使用
OID 1.1
表示请求的属性列表(这将导致目录服务器返回
只有尊贵的名字)。假设目录管理员允许此搜索 - 它可能是
由于资源原因或安全原因或其他原因而被拒绝 - 随着搜索结果的到来,
使用另一个线程来构造正在进行的可分辨名称的修改
在搜索主题中返回。为了获得最大效率,请使用多个线程来制作
修改并为您的API使用适当的并发机制。