AD中指定非活动周期账户及计算机的查询及导出

长时间非活动的计算机是 AD中的垃圾,如果企业规模大的话加上管理员没及时删除对DC来说一大头疼问题,或者说DC每天计划备份都会多浪费时间,所以呢今天就通过脚本给DC清除不必要的垃圾。

通过Dsquery命令的inactive参数排查出指定时间内没有活动的计算机

通过Dsquery /?可查询相关的操作

image

image

备注:-inactive指得是机器未logon的时间,-stalepwd是机器密码未改的时间,-disable是禁用的信息, –noprompt指的是在执行相关的操作不会提示确认信息

Dsquery对于不活动时间越长的计算机越准,因为Active Directory是根据计算机是否验证身份来判断其是否活动的。可以说一台保持开机状态但是没有通过验证及操作的计算机也会被判定为不活动的,对于这个问题在服务器方面比较多见,比如文件共享服务器;

因此我们不能根据Dsquery结果立刻删除计算机帐号及用户账户,我们还需要做一些验证工作(比如通过Ping、remote的方式验证)。

以下介绍几种常见操作:

Dsquery computer –inactive 1 (查询一周内没有活动的计算机)

image

Dsquery computer -disabled | dsrm –noprompt (查出禁用的计算机然后删掉)

Dsquery user –inactive 1 (查询一周内没有活动的用户)

image

Dsquery user -disabled | dsrm –noprompt (查出禁用的用户然后删掉)

建议:建议在使用DisableComputer.CMD两周之后,没有用户报错的情况下再使用DeleteComputer.CMD来删除域中多余的计算机帐号。

Dsquery computer –inactive *(查出指定周期内没有活动的计算机,*代表指定周期,该周期以周来计算;比如1周=7天)

Dsquery user –inactive *(查出指定周期内没有活动的用户)

备注:如果要想在查看后执行相关的删除任务同在查看任务后添加 | dsrm即可

  dsquery computer -inactive 10 -stalepwd 70 |dsmod computer -disabled yes 查处10周未登陆的机器以及70天未能更改域计算机密码的机器(数值可自行指定),然后把它们设成disabled。

小贴士:

如果停用、删除的账户时用户超过默认数值(100)的话,会提示以下信息:

Dsquery computer –inactive (20周=140天) –limit 1000000 (按照实际情况去定义,此值定义越大越完整)>> c:\123.txt

image

加上-subtree参数。例如:

dsquery computer -disabled | dsrm -noprompt -subtree

查询8周未登陆机器,未慎重起见,把结果导出到文件先核对,出现下列错误:

说明通过查看只要数量超过1默认值(100)都会提示该信息

dsquery computer -inactive 8 >>c:\123.txt

image

加上-limit参数,例如:

dsquery computer -inactive 8 -limit 1000 >>c:\123.txt

将保存的信息保存在C盘下,然后名称为123的一个文本文档