在NT移植期间改变用户帐户的属性
在把用户从NT的备份域控制器向Windows 2000移植的过程中,我们需要改变用户的资料档案的路径。这个脚本是由其它的代码的片断以及一些巧妙的方法综合而成的。这使得修改其它用户的属性变得相当容易。
===================================================
' 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