2009-07-07 291 views

回答

6

看一个OU中的所有成员,试试这个...

Set objOU = GetObject("LDAP://OU=YourOU,DC=YourDomain,DC=com") 
For each objMember in ObjOU ' get all the members' 

    ' do something' 

Next 

要做到自定义搜索的DNS试试这个...

set conn = createobject("ADODB.Connection") 
Set iAdRootDSE = GetObject("LDAP://RootDSE") 
strDefaultNamingContext = iAdRootDSE.Get("defaultNamingContext") 
Conn.Provider = "ADsDSOObject" 
Conn.Open "ADs Provider" 

strQueryDL = "<LDAP://" & strDefaultNamingContext & ">;(&(objectCategory=person)(objectClass=user));distinguishedName,adspath;subtree" 
set objCmd = createobject("ADODB.Command") 
objCmd.ActiveConnection = Conn 
objCmd.Properties("SearchScope") = 2 ' we want to search everything 
objCmd.Properties("Page Size") = 500 ' and we want our records in lots of 500 

objCmd.CommandText = strQueryDL 
Set objRs = objCmd.Execute 

While Not objRS.eof 

    ' do something with objRS.Fields("distinguishedName")' 
    objRS.MoveNext 
Wend 
+0

肯,如果我想获得一个在 “sAMAccountName赋” 值特别是名字和姓氏值,根据您的第一个例子,我会做 如果ObjOU.FirstName =“阿兰”和ObjOU.LastName =“史密斯”随后 sVariable = ObjOU.sAMAccountName 这是正确? – Frank 2009-07-07 18:53:27

1

我必须通过oldskool用户名查询WinAD,这个.vbs脚本打印用户帐户。

  • 查找SAM帐户,使用通配符*
  • 打印从每个用户对象的几个属性
  • 使用ACCOUNTTYPE过滤其最优化迭代AD用户的方式对象

测试脚本首先得到一个用户通过完全限定的字符串对象,它只是一个例子。第二部分通过smith *过滤器进行实际查询。

WinADSearch.vbs

' c:> cscript -nologo script.vbs 
' c:> wscript script.vbs 
' http://msdn.microsoft.com/en-us/library/d6dw7aeh%28v=vs.85%29.aspx 

' WindowsAD queries 
' http://www.kouti.com/tables/userattributes.htm 

Option Explicit 
'On Error Resume Next 

Dim StdOut: Set StdOut = WScript.StdOut 

Dim objUser 
Set objUser = GetObject("LDAP://CN=Firstname Lastname,OU=Internal Users,OU=MyCompany,OU=Boston,OU=Root,DC=REGION1,DC=COM") 
println(objUser.givenName & " " & objUser.middleName & " " & objUser.lastName) 
println("name=" & objUser.name) 
println("displayName=" & objUser.displayName) 
println("userPrincipalName=" & objUser.userPrincipalName) 
println("sAMAccountName=" & objUser.sAMAccountName) 
println("distinguishedName=" & objUser.distinguishedName) 


println("") 
Dim conn, strQueryDL, strAttrs, objCmd, objRs, idx 

set conn = createobject("ADODB.Connection") 
conn.Provider = "ADsDSOObject" 
conn.Open "ADs Provider" 

strAttrs = "sAMAccountName,displayName,distinguishedName" ' get attributes 

'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person));" & strAttrs & ";SubTree" 
'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person)(objectClass=user));" & strAttrs & ";SubTree"  
'strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (objectCategory=person)(objectClass=user)(sAMAccountName=smith*));" & strAttrs & ";SubTree" 

strQueryDL = "<LDAP://dc=REGION1,dc=COM>;(& (samAccountType=805306368)(sAMAccountName=smith*));" & strAttrs & ";SubTree" 

set objCmd = createobject("ADODB.Command") 
objCmd.ActiveConnection = Conn 
objCmd.Properties("SearchScope") = 2 ' search everything 
objCmd.Properties("Page Size") = 100 ' bulk operation 

objCmd.CommandText = strQueryDL 
println(objCmd.CommandText) 
Set objRs = objCmd.Execute 
idx=0 
do while Not objRS.eof 
    idx=idx+1 
    println(objRs.Fields("sAMAccountName") & "/" & objRs.Fields("displayName") & "/" & objRs.Fields("distinguishedName")) 
    if (idx>5) then exit do 
    objRS.MoveNext 
loop 
objRs.Close 
Conn.close 
set objRs = Nothing 
set conn = Nothing 
println("end") 


'******************************************************************** 
Sub println(ByVal str) 
    If (StdOut Is Nothing) Then Exit Sub 
    StdOut.WriteLine str 
End Sub 
相关问题