天天看点

查询长期未登录的AD帐号

接近年底,公司内部及外部的审计又开始了。这次公司内部的审计人员比以往专业很多,问了很多帐号管理(申请,离职,公用帐号等方法的管理),确实让我小忙一把。

还真被他们稽核出不了问题。

对于个人帐号,全部上系统申请,参考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,用于存放过期帐号。

 本文转自William宋 51CTO博客,原文链接:http://blog.51cto.com/sting/407195,如需转载请自行联系原作者