admin管理员组

文章数量:1535332

2024年2月17日发(作者:)

ad域过期用户删除

我这边有很多ad用户已经不在使用了,但是这些账户还存在于ad用户中,我想问下能不能根据ad账户使用过期来批量删除这些账户?

我公司这边是这样的,人员流动量很大,离职人员很多,但是都没有办理统一的离职程序,现在ad中有很多离职人员的账户都是没用的。我密码策略中没有设置密码过期时间,能不能判断这些账户1年没用过,并且删除这些离职人员的账户?

回答: 要删除过期账户,可以使用dsquery 指定查询AD中多长时间没有活动的账户,然后用dsrm 删除。如下命令指定20个星期没有活动的用户账户都被删除。

dsquery user -inactive 20 -limit 0 | dsrm –noprompt

-limit 是指定返回满足查询条件的账户的数量,如果指定0则表示返回所有满足查询条件的账户。

-nopromt 表示不用确认删除操作,直接进行删除。

您也可以单独输入dsquery user -inactive 20 -limit 0 来先查看都有哪些账户被返回,如果确认没有问题,则可以结合dsrm删除这些账户。

Dsquery user (英文)

/en-us/library/cc725702(WS.10).aspx

Dsrm (英文)

/en-us/library/cc731865(WS.10).aspx

如果dsrm命令有问题,那我们用下面的脚本来删除。只需要把下面这段脚步拷贝到记事本中,将”c:”更改为您文件的实际路径,然后重命名为后缀为.vbs的文件然后双击即可。您看到的文章来自活动目录seo /category/active-directory/

On Error Resume Next

Set objFSO = CreateObject(“stemObject”)

Set objTextFile = xtFile(“c:”,1)

Do Until fStream

strComputer = ne

strComputer = Replace(strComputer, Chr(34), “”)

Set objComputer = GetObject(“LDAP://”& strComputer)

Object(0)

Loop

Set objTextFile = Nothing

Set objFSO = Nothing

Set objComputer = Nothing

“Done”

当看到提示“Done”时,表示操作完成,您可以查看相应用户是否已经成功删除。

如果在您的环境中没有强制密码策略,那么会有用户很长时间不更改密码但一直在用电脑,这样用 stalepwd 查出来的用户就包括了活动的用户,因此不太合适。

因此还是用 inactive 参数更准确,因为它是查询用户的lastLogonTimestamp

属性,即上次登录的时间戳,因此经常登录的用户不会被查询到。但由于这个属性只有在域和林功能级为2003时才会写入,因此在目前的环境下这个参数也是没办法用的。

我们建议可以让公司的用户最近更改一次密码(可以通过组策略强制),然后用stalepwd参数查询,这样活动的用户都会被排除。

要禁用账户可以使用以下命令:

dsmod userUserDN-disabled {yes|no}

UserDN 指定要禁用或启用的用户对象的可分辨名称。

{yes|no} 指定是否禁止该用户帐户登录(yes 禁止登录,no 允许登录)。

下面这篇问题提供了更多信息:

禁用或启用用户帐户

/zh-cn/library/cc781527(WS.10).aspx#BKMK_cmd

我在2008的DC上进行了测试,是可以用dsquery结合dsmod来批量禁用用户账户的。

命令如下:

Dsquery user –inactive 10 | dsmod user –disabled yes

这样所有10周没有登录过的用户账户就被禁用了。

Alan Zhang

ad域过期用户删除的相关文章请参看

查询没有登录的域用户

查询过期域账户

域账户有效期

域账户登录审核

域账户有效期

—gnaw0725

本文标签: 用户账户删除没有登录