利用VBS批量更改AD用戶信息

工作需要從Excel文件中批量導入用戶的職位,部門,電話和手機等信息到AD用戶(在Outlook或者Lync中顯示),Google了半天搞了這個VBS腳本。

使用時需要建立useinfo.csv文件,每行內容依次爲AD用戶的Display Name(全名),職位,部門,電話,手機,所屬公司。假如域名爲ABC.local,需要處理的OU爲testOU;userinfo.csv同目錄,腳本內容如下:

Dim userInfo
Dim userCounter
Const ADS_SCOPE_SUBTREE = 2

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.OpenTextFile("Userinfo.csv")

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
userCounter = 0
Do
On Error Resume Next
        userInfo = Split(objfile.ReadLine,",")
        strDN = FindUserDN(userInfo(0))
        Set objUser = GetObject("LDAP://" & strDN)
        objUser.Put "title", userInfo(1)
        objUser.Put "department", userInfo(2)
        objUser.Put "telephoneNumber", userInfo(3)
        objUser.Put "mobile", userInfo(4)
        objUser.Put "company", userInfo(5)
        objUser.SetInfo       
        userCounter = userCounter + 1
        If Err.Number <> 0 Then
               userCounter = userCounter -1
               WScript.Echo "Failed user:  " & userInfo(0) 
        End If
        strDN = ""
Loop Until objfile.AtEndOfStream = True

objfile.Close

WScript.Echo "A total of " & UserCounter & " users' infomation has been updated."

Function FindUserDN(strUserDisplayName)
        objCommand.CommandText = _
            "SELECT distinguishedName FROM 'LDAP://OU=testOU,DC=ABC,DC=Local' WHERE objectCategory='user' " & _
                "AND displayname = '" & strUserDisplayName & "'"
        Set objRecordSet = objCommand.Execute
        objRecordSet.MoveFirst
        Do Until objRecordSet.EOF
            arrDN = objRecordSet.Fields("distinguishedName").Value
            If IsArray(arrDN) = True Then
                    WScript.Echo strUserDisplayName
                    FindUserDN = arrDN(0)
            Else
                    FindUserDN = arrDN
            End if
            objRecordSet.MoveNext
        Loop
        If Err.Number <> 0 Then
                WScript.Echo Err.Description & ":" & strUserDisplayName
                Err.Clear
        End If       
End Function

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章