Author: Bradly T. Bolin
Platform: Windows NT, Windows 2000
Type: VBScript
This VBS script will remove a workstation from a given NT domain, rename it, and then rejoin it to the domain.
Download the script.
Scroll down to view the script.
'========================================================================== ' ' VBScript Source File ' ' NAME: computer_rename.vbs ' ' AUTHOR: Bradly T. Bolin ' DATE : 4/5/2001 ' ' COMMENT: Removes computer from an NT domain, renames it, then rejoins it ' Requires NETDOM.EXE from Windows 2000 Resource Kit ' '========================================================================== Option Explicit Dim oFileSystem 'Scripting Dictionary object Dim oWshShell 'Windows Script Host Shell object Dim sCurrentName 'holds computername environment variable Dim oWshEnvironment 'Windows Script Host environment object Dim sTempDir 'temporary directory of computer on which comprename.vbs is run Dim sPHASE 'holds number indicating PHASE in rename operation Dim sProgram 'name of this script Dim sProgramDir 'Path to this script Set oFileSystem = CreateObject("Scripting.FileSystemObject") Set oWshShell = CreateObject("WScript.Shell") Set oWshEnvironment = oWshShell.Environment("Process") sCurrentName = oWshEnvironment("COMPUTERNAME") sTempDir = oWshEnvironment("TEMP") sProgram = "computer_rename.vbs" sProgramDir = oFileSystem.GetAbsolutePathName(".") On Error Resume Next sPHASE = oWshShell.RegRead("HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonPhase") Select Case sPHASE Case "" Call REMOVE 'Subroutine Case "1" Call REJOIN 'Subroutine End Select 'Restart computer Dim OpSysSet, OpSys Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true") For Each OpSys In OpSysSet OpSys.Reboot() Next WScript.Quit 'REMOVE Subroutine: Remove computer from domain, rename it and restart it Sub REMOVE 'Create Dictionary (key: Name, item: NewName) and load data into it Dim oCompName, oTextStream, sArray, sLine, sNewName Dim oDictionary 'VBScript Dictionary Object Set oDictionary = CreateObject("Scripting.Dictionary") Set oCompName = oFileSystem.GetFile(sProgramDir & "" & "compname.txt") Set oTextStream = oCompName.OpenAsTextStream(1) Do While Not oTextStream.AtEndOfStream sLine = oTextStream.ReadLine sArray = Split(sLine, " = ", -1, 1) ' sArray(0) contains NAME. ' sArray(1) contains NEWNAME. oDictionary.Add sArray(0), sArray(1) Loop oTextStream.Close 'Abort if computer is NOT in list of those to be renamed If oDictionary.Exists(sCurrentName) = FALSE Then MsgBox("Error") WScript.Quit End If 'It's OK to proceed, so retrieve new computer name and place in variable sNewName sNewName = oDictionary.Item(sCurrentName) 'Copy files necessary for the rename operation to local machine oFileSystem.CopyFile sProgramDir & "" & sProgram, sTempDir & "" & sProgram oFileSystem.CopyFile sProgramDir & "" & "NETDOM.EXE", sTempDir & "" & "NETDOM.EXE" 'Backup user logon name to PreviousName value Dim sUserName sUserName = oWshShell.RegRead("HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName") oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonPreviousUser", sUserName 'Increment PHASE value oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonPhase", 1 'Place reference to program in RunOnce key oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnceRUN_RENAME", sTempDir & "" & sProgram 'Enable AutoAdminLogon oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonAutoAdminLogon", 1 oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName", "XXX" oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultPassword", "XXX" oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultDomainName", sNewName 'Execute NETDOM REMOVE oWshShell.Run sTempDir & "" & "NETDOM.EXE REMOVE " & sCurrentName & " /D:XXX /Ud:XXX /Pd:XXX", 1, TRUE 'Rename computer oWshShell.RegWrite "HKLMSYSTEMCurrentControlSetControlComputerNameComputerNameComputerName", sNewName oWshShell.RegWrite "HKLMSYSTEMCurrentControlSetServicesTcpipParametersNV Hostname", sNewName End Sub 'REJOIN Subroutine: Rejoin computer to the domain and clean some stuff up Sub REJOIN 'Restore previous user logon name from PreviousUser Value Dim sUserName sUserName = oWshShell.RegRead("HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonPreviousUser") oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName", sUserName 'Delete PHASE value oWshShell.RegDelete "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonPhase" 'Disable AutoAdminLogon oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonAutoAdminLogon", 0 oWshShell.RegDelete "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultPassword" oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultDomainName", "XXX" 'Place clean-up routine in RunOnce key Dim sCMD sCMD = "c:winntsystem32" oWshShell.RegWrite "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnceRUN_CLEANUP", sCMD & "CMD.EXE /c DEL " & sTempDir & "" & sProgram 'Execute NETDOM JOIN oWshShell.Run sTempDir & "" & "NETDOM.EXE JOIN " & sCurrentName & " /D:XXX /Ud:XXX /Pd:XXX", 1, TRUE End Sub
Disclaimer: We hope that the information in these pages is valuable to you. Your use of the information contained in these pages, however, is at your sole risk. All information on these pages is provided “as -is”, without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by me. I shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages.