用下面的語句可以查詢AD中的任何資訊,而且你可以選擇你需要查詢的列,可以加入選擇條件,可以查詢固定OU等等,可擴充性是非常好的。
指令碼運行以目前使用者許可權查詢AD資訊,所以確保目前使用者為域使用者。 因為只涉及到查詢,所以不需要特殊許可權。
On Error Resume NextConst ADS_SCOPE_SUBTREE = 2Set objConnection = CreateObject("ADODB.Connection")Set objCommand = CreateObject("ADODB.Command")objConnection.Provider = "ADsDSOObject"objConnection.Open "Active Directory Provider"Set objCommand.ActiveConnection
= objConnectionobjCommand.Properties("Page Size") = 1000objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommandProperties("Sort On") = "Name"objCommand.CommandText = _ "SELECT Name FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user'"
Set objRecordSet = objCommand.ExecuteobjRecordSet.MoveFirstDo Until objRecordSet.EOF Wscript.Echo objRecordSet.Fields("Name").Value objRecordSet.MoveNextLoop
你也可以選擇用其他賬戶實現:
objConnection.Properties("User ID") = "Administrator"objConnection.Properties("Password") = "irte56$#sW"objConnection.Properties("Encrypt Password") = TRUEobjConnection.Properties("ADSI Flag") = 1
如果你只需要抓取目前使用者的資訊就非常簡單了,可以用下面的指令碼:
On Error Resume NextSet objSysInfo = CreateObject("ADSystemInfo")strUser = objSysInfo.UserNamestrComputer = objSysInfo.ComputerNameSet objUser = GetObject("LDAP://" & _ strUser)strUserName = objUser.displayNameSet objComputer = GetObject("LDAP://" & _
strComputer)objComputer.Description = strUserNameobjComputer.SetInfo
在微軟的網站上對上述指令碼有非常詳細的介紹:
http://technet.microsoft.com/en-us/magazine/2007.08.heyscriptingguy.aspx
http://technet.microsoft.com/zh-cn/library/ee692830.aspx