您的位置:首页 > 产品设计 > UI/UE

查询长期未登录的AD帐号

2010-10-18 15:58 211 查看
接近年底,公司内部及外部的审计又开始了。这次公司内部的审计人员比以往专业很多,问了很多帐号管理(申请,离职,公用帐号等方法的管理),确实让我小忙一把。
还真被他们稽核出不了问题。
对于个人帐号,全部上系统申请,参考HR数据库建立,同时在离职时HR系统自动禁用帐号,隔日发报表给相关人员进行统一删除。
对于公用帐号,有些部门之前申请的,即使不用了他们也不会通过IT部门去取消,所以公用帐号可能会一直在增加,但IT人员也无法去管理(帐户信息可能已经不准确)

下面介绍一命令,在win2008如果有安装AD服务,该命令已经有包含。
dsquery 命令,
dsquery user可查询AD 用户信息(我之前有一篇文章,dsquery computer可查询AD计算机帐户,两者处理的方式是一样的)

以下是一条命令
dsquery user "dc=contoso,dc=com" -scope subtree -inactive 13 -limit 1 | dsmove -newparent "ou=olduser,dc=contoso,dc=com"

解释:
dsquery user 查询AD user帐号
"dc=contoso,dc=com" 为查询的AD路径
-scope subtree为查询范围,此处为包含下级各目录
-inactive 13 为13周未登录过的帐号,一般3个月强制变更密码,所以13周没登录的话这个帐号应该是没有在使用了
-limit 1为一次操作一条记录 (由于通过管道 | 传给dsmove命令进行再次操作,所以此次只能为1)
| 为管道操作符
dsmove 将查询到的对象移到指定OU
-newparent "ou=olduser,dc=contoso,dc=com" 为目标OU,用于存放查询到的用户对象
一般情况下我在对AD用户及计算机帐号管理时,不会立即删除帐号,都会将他们移至一个OU,再将这个帐号全部禁用,再观察下1个月什么的。这只是为了安全。

以上的命令一次只能执行一个User对象,所以我还得写个BAT命令,让其循环执行多次,所以我暂时将上以命令保存为d.bat吧

再建立一个c.bat文件,执行时由c.bat去调用d.bat(每次查询过期帐户时,也都只执行c.bat,c.bat和d.bat放在同一目录下)
for /l %%a in (1,1,1000) do d.bat  这个命令是指重复执行d.bat程序 1000次,当然啦这个次数你可以改。

我已附上附件,各位如果要实践的话,只要改下域名,并在域中新建个OU,用于存放过期帐号。

附件:http://down.51cto.com/data/2356950
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息