AD中查询180天未登录的计算机账户

dsquery computer -stalepwd 180 -limit 0 >computer.txt
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
命令:dsquery http://technet.microsoft.com/en-us/library/cc755655.aspx 工具:oldcmp 使用OldCmp,你可以搜索、禁用或者删除非活动计算机账号。甚至更好的是,你可以创建一个简单的批处理文件来使这个过程自动化。当你用OldCmp来执行一个搜索的时候,你必须指定以下三种可能选项的至少一种:-report(生成一张列有非活动计算机账号的HTML报告列表),-disable(禁用非活动计算机账号),-delete(删除非活动计算机账号)。如果你运行OldCmp时只加了-report选项,它会搜索你默认域所有计算机密码老化日期大于90计算机对象,并且把结果生成为一个HTML报告。如果你的域非常大,并且里面有很多计算机账号,这条命令可能得花上一段时间来执行完毕。为了减少OldCmp的运行时间,你可以使用-b选项来指定一个特定的组织单元。OldCmp生成的HTML文件会被放到该工具的运行目录下,除非你用-file选项指定了一个替换位置。如果你包括了-sh选项,OldCmp会在生成HTML文件后自动打开它。如果你想定期地生成HTML报告,你所需要做地全部就是创建一个只包含两行代码的批处理(.bat)文件,如表1所示。其第一行运行OldCmp,而第二行运行Blat。Blat是一个把文件内容通过电子邮件发送出去的工具,你可以从http://blat.net下载该工具。在第二行,注意用-to选项设置你自己的电子邮件地址。另外,确认OldCmp和Blat都被放到了你的运行路径下(即在PATH环境变量定义的路径)。建立了批处理文件之后,你需要创建一个计划任务。确认你为其指定了一个合适的域账号和密码,使该脚本有足够的权限在域查询计算机对象。辨别非活动计算机账号很有帮助,但更可能的是,你有时候想清除那些账号。我的一般建议是先禁用那些非活动账号,然后经过一个星期或一个月的观察,再删除那些禁用了的账号。这样能保证确实没有人在使用我们删掉的那些账号。表2包含的批处理文件是用来删除禁用的计算机账号,以及禁用新发现的非活动计算机账号的。这个批处理文件有两段命令(注意不要交换次序)。第一段用OldCmp删除禁用了的计算机账号,并且创建deleted_comps.html报告,接着用Blat把该报告发送到XXX@XXX.com。第二段用OldCmp禁用所有计算机密码旧于180计算机账号,并且创建disabled_comps.html报告,接着用Blat发送该报告。在写OldCmp的时候,Joe考虑到人们可能会意外地删除或禁用数以千计的计算机账号,所以他加了一些预防措施,包括你所见到的在每个命令集都有的-safety和-forreal选项。-safety选项用来限制脚本所能删除或者禁用的账号数量。默认情况下,OldCmp不会删除或禁用超过10个账号。若把-safety选项值设为100,则OldCmp最多可以删除100个账号。-forreal选项用来真正删除或者禁用账号。如果不用-forreal选项,OldCmp只会报告它要删除或禁用的账号,而不会真正地删除或者禁用它们。在使用表2的批处理文件之前,你需要自定义在两行Blat命令的电子邮件地址。此外切记,为了测试,你应该先去掉两行OldCmp命令的-forreal选项,然后运行批处理文件来确定OldCmp将要删除或者禁用的账号无误。表1:建立非活动计算机账号报告的批处理文件oldcmp -report -file c:\inactive.htmlblat c:\inactive.html -to XXX@XXX.com -html表2:删除被禁用的计算机账号和禁用新发现的非活动计算机账号的批处理文件oldcmp -delete -onlydisabled -safety 100 -forreal -append -file c:\deleted_comps.htmlblat c:\deleted_comps.html -to XXX@XXX.com -htmloldcmp -disable -age 180 -safety 100 -forreal -append -file c:\disabled_comps.htmlblat c:\disabled_comps.html -to XXX@XXX.com -html
要使用Java获取AD域的登录账户,我们可以使用LDAP(Lightweight Directory Access Protocol)协议与AD域进行通信。 首先,我们需要使用Java的LDAP库来连接AD域的LDAP服务器。可以使用如下代码创建一个LDAP连接: ``` java import javax.naming.Context; import javax.naming.NamingEnumeration; import javax.naming.directory.Attributes; import javax.naming.directory.DirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.naming.ldap.LdapContext; public class ADLogin { public static void main(String[] args) { String ldapURL = "ldap://ad_domain_controller_ip:port"; String baseDN = "DC=your_domain,DC=com"; String username = "your_username"; String password = "your_password"; try { // 创建LDAP连接 LdapContext context = new InitialLdapContext(ldapEnv, null); // 创建搜索控件 SearchControls searchControls = new SearchControls(); searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); // 设置要搜索的属性,这里我们只搜索sAMAccountName属性 String[] returningAttributes = {"sAMAccountName"}; // 执行搜索 NamingEnumeration<SearchResult> results = context.search(baseDN, "(sAMAccountName=" + username + ")", returningAttributes, searchControls); // 获取搜索结果 if (results.hasMore()) { SearchResult searchResult = results.next(); Attributes attributes = searchResult.getAttributes(); String loginAccount = attributes.get("sAMAccountName").get().toString(); System.out.println("登录账户:" + loginAccount); } else { System.out.println("未找到登录账户"); } // 关闭LDAP连接 context.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码,我们创建了一个LDAP连接并指定AD域的服务器地址、域名,以及要使用的用户名和密码。然后,我们执行一个搜索操作,通过用户名查找对应的登录账户属性(这里仅查找了sAMAccountName属性)。最后,我们从搜索结果获取登录账户的值并进行输出。 需要注意的是,在执行代码之前,需要确保你已经包含了Java的LDAP库并正确地替换了相关的服务器地址、域名、用户名和密码信息。 通过以上方法,我们可以使用Java来获取AD域的登录账户

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值