活动目录里导出用户信息后在Access里update数据的"风波"
将Username及部门从活动目录里导出.实现过程:本人试过很多种导出方法,有:csvde,dsquery,net group均感觉不完美,最后个人还是:
第一:将user.vbs拷贝到DC上去,注意编辑一下user.vbs里边的你的对应的部门信息。当然可以修改成您想提取的字段,呵呵。
- Set objGroup = GetObject("LDAP://CN=工程部,OU=Groups,OU=beijing,DC=ceri,DC=com,DC=cn")
- objGroup.GetInfo
- arrMemberOf = objGroup.GetEx("member")
- For Each strMember in arrMemberOf
- Set objUser = GetObject("LDAP://" & strMember)
- objUser.GetInfo
- WScript.Echo objUser.sAMAccountName & "," & "工程部" & "," & objUser.Displayname & "," & objUser.Department
- Next
第二:在DC上开一个CMD窗口,CD到user.vbs所在的目录,运行:
- cscript user.vbs>user.csv
重复多次这个操作即将AD中这些安全组成员顺利导出并进行合并user.csv
公司有一个监控打印的Access库,但对于已产生的监控结果也要进行一次更新,具体情况如下图:
通过上边步骤生成的user.csv,(将user.csv导入到Access的一个临时表上,然后用下文一样的方法,故在此略过这个过程)很顺利导入完成公司300多人的域帐号(字段:UserName)与部门一一对应到UserReg里的字段:DeptName上:
可是2012年1月至今不到两个月已产生了监控记录达4000多条如下图,在部门字段:DeptName上全是未设定:
我们要将PrtData表里的DeptName通过表:UserReg里的部门信息更新过来,那么有一个关系是:这两个表均有一个UserName
熟悉MSSQL的朋友可以会第一反映写出:
- update PrtData set PrtData.DeptName=UserReg.DeptName from PrtData,UserReg where PrtData.UserName=UserReg.UserName
可是,Access里的update是没有from子句的,翻阅BAIDU,看到好多人说让我导到MSSQL里去做,然后导回来,天,那确实是个体力活,然后温习了一下Access,顺利解决问题:
- update PrtData,UserReg set PrtData.DeptName=UserReg.DeptName where PrtData.UserName=UserReg.UserName
特此留存。供自己和自己一样情况的朋友们参考,少走弯路。
转载于:https://blog.51cto.com/boyhong/789203