Please let us know how useful you find this tip by rating it below. Do you have a useful Windows tip, timesaver or workaround to share? Submit it to our monthly tip contest and you could win a prize!
In the process of migrating users from NT BDCs to Windows 2000, we needed to change the users' profile paths. This script was put together from snipits of other code and some tweaking. It would be pretty easy to modify the code for other user properties.
'===================================================
' Name: moduser.vbs
' Description: Modify profile path of user accounts.
Only those with a current roaming profile are udpated.
' Original: 13 Jun 05
'
'=================================================
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection
WScript.StdOut.WriteLine "Enter search criteria.
Wildcards can be used."
strUserName = WScript.StdIn.ReadLine
WScript.Echo
objCommand.CommandText = _
"<LDAP://dc=,dc=>;" & _
"(&(objectCategory=user)(sAMAccountName=" & strUserName & "));" & _
"sAMAccountName,profilePath,ADsPath;subtree"
Set objRecordSet = objCommand.Execute
If objRecordset.EOF Then
Wscript.Echo "No user account(s) found with the specified criteria."
Else
Wscript.Echo "User account(s) with the specified criteria:"
While Not objRecordset.EOF
Wscript.Echo objRecordset.Fields("sAMAccountName") & " : " & _
objRecordset.Fields("profilePath")
objRecordset.MoveNext
WEnd
End If
WScript.Echo
strNewProfPath = ""
While strNewProfPath = ""
WScript.StdOut.WriteLine "Enter new profile server and share: "
StrNewProfPath = WScript.StdIn.ReadLine WEnd WScript.Echo
' Refresh record set to apply new path.
Set objRecordSet = objCommand.Execute
While Not objRecordset.EOF
If IsNull(objRecordSet.Fields("profilePath")) Then
WScript.Echo objRecordSet.Fields("sAMAccountName") & " has no roaming profile."
WScript.Echo
Else
strADsPath = objRecordSet.Fields("ADsPath")
Set objUser = GetObject(strADsPath)
objUser.Put "profilePath", strNewProfPath & "" & _
objRecordset.Fields("sAMAccountName") & ".USR"
objUser.SetInfo
End If
objRecordset.MoveNext
WEnd
' Refresh record set to view new profile path.
Set objRecordSet = objCommand.Execute
WScript.Echo "User account(s) with the new target data:"
While Not objRecordset.EOF
'WScript.Echo objRecordSet.Fields("profilePath")
If objRecordSet.Fields("profilePath") <> " " Then
Wscript.Echo objRecordset.Fields("sAMAccountName") & " : " & _
objRecordset.Fields("profilePath")
End If
objRecordset.MoveNext
WEnd
objConnection.Close