事件说明:由于电话交换机升级,所有用户电话号码都改变,需要批量修改所有域用户电话号码!
1.1 方案一
采用VB代码实现!
这段代码是在CSDN上找的,更改过相关字符,包含二个文件,一个文件是代码可执行文件change.vbs,一个是需要更改的用户清单文件userinfo.csv
代码如下:标红为需要更改的字段!
Dim objInfo
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
Do
On Error Resume Next
objInfo = Split(objfile.ReadLine,
strDN = FindUserDN(objInfo(0))
Set objUser = GetObject("LDAP://" & strDN)
objUser.Put "telephoneNumber
objUser.SetInfo
If Err.Number <> 0 Then
WScript.Echo "Error:" & objInfo(0) &
End If
strDN = ""
Loop Until objfile.AtEndOfStream = True
objfile.Close
WScript.Echo "Done!"
Function FindUserDN(strUserDisplayName)objCommand.CommandText = _
"SELECT distinguishedName FROM 'LDAP://DC=wangba,DC=cn' 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.telephoneNumber & ":" & strUserDisplayName
Err.Clear
End If
End Function
更改清单如下:
文件打包如下(打包的文件的代码已贴出):
userinfo.csv
1.2 方案二
通过dsmod命令来完成!
dsmod user "CN=罗某某,CN=Users,DC=wangba,DC=cn" -tel "1112"dsmod user "CN=周某某,CN=Users,DC=wangba,DC=cn" -tel "1113" 把所有需要修改的电话按下面格式帖在域控命令行!