欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

联合

公告

注意:本人的所有文档均可以引用,但引用必须说明出处。
最初步的枚举脚本

这两个脚本是应Austin的要求匆忙中写就的,要求非常简单:

枚举出域内所有的用户和计算机帐号,并且统计数量。

首先是枚举域内用户帐号:

dim i
Set con = CreateObject("ADODB.Connection")
Set com = CreateObject("ADODB.Command")
'Open the connection with the ADSI-OLEDB provider name
con.Provider = "ADsDSOObject"
con.Open

Com.ActiveConnection = con

Com.CommandText = "<LDAP://DC=qiqinghua,DC=com>;" & "(objectClass=user);SamAccountName;subTree"
Set rs = Com.Execute()
i=0
Do Until rs.EOF
 if right(rs.Fields("samAccountName"),1)<>"$" then
   sResultText = sResultText & rs.Fields("SamAccountName") & ","& vbCrLf
   i=i+1
 end if
 rs.movenext
 
Loop
WScript.Echo sResultText
wscript.echo "There are "&i&" users in your domain"

con.close

 

大家注意到了没有,我加黑的部分,古怪在这里,虽然我在脚本中明确查找的对象是"user",但仍旧返回了计算机帐号,在AD看来,计算机帐号一样也是用户帐号,只是在计算机名字后面加上了一个"$"符号,所以,我用一个条件语句进行过滤结果。

 

下面的查找计算机帐号就要容易一点,结构完全和上面的一样:

dim i
Set con = CreateObject("ADODB.Connection")
Set com = CreateObject("ADODB.Command")
'Open the connection with the ADSI-OLEDB provider name
con.Provider = "ADsDSOObject"
con.Open

Com.ActiveConnection = con

Com.CommandText = "<LDAP://DC=qiqinghua,DC=com>;" & "(objectClass=computer);SamAccountName;subTree"
Set rs = Com.Execute()
i=0
Do Until rs.EOF
sResultText = sResultText & rs.Fields("SamAccountName") & ","& vbCrLf
rs.MoveNext
i=i+1
Loop
WScript.Echo sResultText
wscript.echo "There are "&i&" computers in your domain"

con.close

我说过,这是匆忙写就的脚本,所以有很多要改进的地方

1。域名现在是绝对的写在脚本中的,导致通用性不好,所以,要改成自动感知域名

2。输出就是一个简单的wscript.echo,如果用户或计算机帐号很多的话,简直不能容忍,所以需要将输出改为定向到一个文件。

修改后的脚本是怎样的呢?且听下回分解。。。。。。呛呛里格呛呛。。。。。蔡!

已发表 2007年10月8日 9:53 作者 qiqinghua

归档在:

评论

# re: 最初步的枚举脚本 @ 2007年10月11日 20:12

无聊的人哈,居然会写这种东东。。。。继续写吧

你认不出我。。。你认不出我。。。

menglong

禁止匿名发表评论