Datamation Logo

System Administration: Script to Rename a Workstation (VBS)

September 24, 2003
Datamation content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

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.

  SEE ALL
APPLICATIONS ARTICLES
 

Subscribe to Data Insider

Learn the latest news and best practices about data science, big data analytics, artificial intelligence, data security, and more.

Datamation Logo

Datamation is the leading industry resource for B2B data professionals and technology buyers. Datamation's focus is on providing insight into the latest trends and innovation in AI, data security, big data, and more, along with in-depth product recommendations and comparisons. More than 1.7M users gain insight and guidance from Datamation every year.

Advertisers

Advertise with TechnologyAdvice on Datamation and our other data and technology-focused platforms.

Advertise with Us

Our Brands


Privacy Policy Terms & Conditions About Contact Advertise California - Do Not Sell My Information

Property of TechnologyAdvice.
© 2025 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.