最初步的枚举脚本
这两个脚本是应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,如果用户或计算机帐号很多的话,简直不能容忍,所以需要将输出改为定向到一个文件。
修改后的脚本是怎样的呢?且听下回分解。。。。。。呛呛里格呛呛。。。。。蔡!