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.
RELATED NEWS AND ANALYSIS
-
Huawei’s AI Update: Things Are Moving Faster Than We Think
FEATURE | By Rob Enderle,
December 04, 2020 -
Keeping Machine Learning Algorithms Honest in the ‘Ethics-First’ Era
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 18, 2020 -
Key Trends in Chatbots and RPA
FEATURE | By Guest Author,
November 10, 2020 -
FEATURE | By Samuel Greengard,
November 05, 2020 -
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 02, 2020 -
How Intel’s Work With Autonomous Cars Could Redefine General Purpose AI
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 29, 2020 -
Dell Technologies World: Weaving Together Human And Machine Interaction For AI And Robotics
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 23, 2020 -
The Super Moderator, or How IBM Project Debater Could Save Social Media
FEATURE | By Rob Enderle,
October 16, 2020 -
FEATURE | By Cynthia Harvey,
October 07, 2020 -
ARTIFICIAL INTELLIGENCE | By Guest Author,
October 05, 2020 -
CIOs Discuss the Promise of AI and Data Science
FEATURE | By Guest Author,
September 25, 2020 -
Microsoft Is Building An AI Product That Could Predict The Future
FEATURE | By Rob Enderle,
September 25, 2020 -
Top 10 Machine Learning Companies 2020
FEATURE | By Cynthia Harvey,
September 22, 2020 -
NVIDIA and ARM: Massively Changing The AI Landscape
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
September 18, 2020 -
Continuous Intelligence: Expert Discussion [Video and Podcast]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 14, 2020 -
Artificial Intelligence: Governance and Ethics [Video]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 13, 2020 -
IBM Watson At The US Open: Showcasing The Power Of A Mature Enterprise-Class AI
FEATURE | By Rob Enderle,
September 11, 2020 -
Artificial Intelligence: Perception vs. Reality
FEATURE | By James Maguire,
September 09, 2020 -
Anticipating The Coming Wave Of AI Enhanced PCs
FEATURE | By Rob Enderle,
September 05, 2020 -
The Critical Nature Of IBM’s NLP (Natural Language Processing) Effort
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
August 14, 2020
APPLICATIONS ARTICLES