以禁用Active Directory帐户的方式提取用户邮箱列表的脚本

我有一个过程,当它们被终止时,我们禁用Active Directory用户帐户。 Exchange 2007邮箱已保留,转发设置为用户pipe理器。 我需要定期运行一个脚本,它将拉出当前活动的邮箱列表,禁用相应的AD帐户。 我没有任何types的脚本的经验,但相信可以根据我读过的其他东西来完成。 我做了一些search,但提出这个具体要求空手。 谢谢。

Server 2003R2,Exchange 2007,AD

要明确我不是要求任何人为我写这个,只是一些链接可能推动我在正确的方向。

您可以通过PHP之类的语言使用标准的LDAP调用,也可以使用来自Microsoft产品(例如C#与DirectoryServices库)的AD特定的调用。 我没有Exchange,所以我不知道邮箱的原始属性是什么,但要查看某个帐户是否被禁用,您需要检查每个用户的“userAccountControl”属性,然后解释数字标记以查看该帐户是否被禁用(标志的列表可以在这里看到: http : //support.microsoft.com/kb/305144 )

脚本的基本过程是:

  1. 使用LDAP(PHP,Perl等)或DirectoryService(Visual Basic,C#)绑定到Active Directory。

  2. search所有被禁用的用户对象(SamAccountType为30000000,hex的对象)(hexuserAccountControl值为整数forms,包含'2'的对象)

  3. 循环访问生成的对象并进行调用,以确定哪些邮箱是活动的(同样,我不使用Exchange,因此我没有很好的答案)。

  4. 每次在#3(sAMAccountName,dn和cn将是开始的好地方)中打一个合适的属性时,打印或写入文件以及整个报告的date戳记。

应该有一个工具与您的Exchange安装在一起,称为LDIFDE 。 有了这个工具,你可以导入或导出你的ActiveDirectory的东西。 如果您需要包含所有禁用的useraccounts的文件,只需打开一个命令行并input:

LDIFDE -u -f myexport.ldif -r“(&(objectCategory = person)(userAccountControl = 514))”

如果导出的数据太多,可以用各种参数来限制。 如果您只想要禁用帐户的名称,请尝试

LDIFDE -u -f myexport.ldif -r“(&(objectCategory = person)(userAccountControl = 514))”-l“dn”

最好的问候,菲尔。

这应该有所帮助: http : //msexchangetips.blogspot.com/2007/06/exchange-find-disabled-accounts-with.html

我相信有一种方法可以使用PowerShell来实现这一点,但目前我手头没有Exchange服务器。

分享我最终使用的解决scheme作为我最终的解决scheme,除了在每个人的答案中留下的评论之外,我还想详细说明一下。

当员工被终止时,我决定开始使用隐藏从Exchange地址列表属性。

那么使用LDIFDE结合Phil提供的信息和Massimo的链接就是我所做的。

LDIFDE -fc:\disabledusersmailbox.txt -r "(&(UserAccountControl=514)(objectClass=User)(msExchHideFromAddressLists=TRUE))" -l "dn"