[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 19332
  • Last Modified:

Renaming of Computer's Name using VBScript

Hi Experts
Current, i got a script that enables me to view the current settings of the computer's name...
But upon display the name, i would like the user to have the option to change the existing computer name or to quit the script. may i know am is it going to be done? is it possible to merge this 2 scripts into one? e.g below

cheers
=====Script=====Displays Computer Name
Option Explicit 
 
Dim Text, Title
Dim WshNetwork         ' Object variable
Text = "Networking information" & vbCrLf & vbCrLf
Title = "Rename Hostname?"
 
' Create a new WshNetwork object to access network properties.
Set WshNetwork = WScript.CreateObject("WScript.Network")
 
Text = Text & "Computer name : " & WshNetwork.ComputerName & vbCrLf
Text = Text & "Domain : " & WshNetwork.UserDomain & vbCrLf
Text = Text & "User name : " & WshNetwork.UserName & vbCrLf
 
MsgBox Text, vbYesNo + vbQuestion, Title
 
=====End=====
 
=====Script=== Prompting user to rename or not
 
strComputerName = InputBox("Enter a new machine name for this computer:", "Rename Computer")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery ("Select Name from Win32_ComputerSystem")
For Each objComputer in colComputers
      intErrorCode = objComputer.Rename(strComputerName)
      If intErrorCode <> 0 Then
            MsgBox "Error renaming computer. Error # " & intErrorCode
      Else
            Set objOutputFile = objFSO.CreateTextFile(strRenameFlag, True)
            objOutputFile.Close
            Set objOutputFile = Nothing
            MsgBox "Computer renamed. It will now reboot."
            objShell.Run "rundll32 shell32.dll,SHExitWindowsEx 2", 1, False
      End If
Next
 
=====Exit=====

Open in new window

0
Manfredtoo
Asked:
Manfredtoo
1 Solution
 
biztopiaCommented:
Try this code.

It worked in my testing.  Let me know if you have any problems with it.

Cheers
D.
Option Explicit 
 
Dim Text, Title
Dim WshNetwork         ' Object variable
Text = "Networking information" & vbCrLf & vbCrLf
Title = "Rename Hostname?"
 
' Create a new WshNetwork object to access network properties.
Set WshNetwork = WScript.CreateObject("WScript.Network")
 
Text = Text & "Computer name : " & WshNetwork.ComputerName & vbCrLf
Text = Text & "Domain : " & WshNetwork.UserDomain & vbCrLf
Text = Text & "User name : " & WshNetwork.UserName & vbCrLf & vbCrLf
Text = Text & "Do you want to rename this computer?"
 
If MsgBox(Text, vbYesNo + vbQuestion, Title) = vbyes Then
	Dim strComputerName, objWMIService, objComputer, returnCode
 
	strComputerName = InputBox("Enter a new machine name for this computer:", "Rename Computer")
 
	If strComputerName <> "" Then 
 
		Set objWMIService = GetObject("Winmgmts:root\cimv2") 
 
		' Call always gets only one Win32_ComputerSystem object. 
		For Each objComputer in objWMIService.InstancesOf("Win32_ComputerSystem")
			ReturnCode = objComputer.Rename(strComputerName) 
		Next
		If ReturnCode <> 0 Then
			MsgBox "There was a problem changing the computer name.  System error code : " & ReturnCode
		Else
			If MsgBox("Changes made.  Do you wish to restart the computer?", vbYesNo + vbQuestion, Title) = vbyes Then 
				objShell.Run "rundll32 shell32.dll,SHExitWindowsEx 2", 1, False
			Else 
				MsgBox "You must restart computer for changes to take effect"
			End If 
		End If 
	End If 
End If 

Open in new window

0
 
ManfredtooAuthor Commented:
biztopia: thanks man... it works great.=)
0
 
017087594Commented:
can someone please help im getting "System error code : 5
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
varcomCommented:
Hello biztopia,

Copied the script to notepad and everything went smooth up unitl the below error........

LIne 33
Char 5
Error Variiable is undefined: 'objShell'
Code: 800A01F4
Source:  Microsoft VBScript runtime error


Thanks for the help.
0
 
ranga_mattaCommented:
can someone please help im getting "System error code : 5
0
 
Net-tech1Commented:
Varcom,
Add
Dim objShell to line 2
0
 
Net-tech1Commented:
You are getting the error code 5 because of the split token in windows 7. if you elevate the scripts privileges it should allow you to change the computers name.

This should work.
' ************************************************

' RENAME COMPUTER NAME

' ************************************************
Option Explicit 
 ElevateIfNeeded
 
Dim Text, Title
Dim WshNetwork
Dim objshell		' Object variable
Dim oShell         
Text = "Networking information" & vbCrLf & vbCrLf
Title = "Rename Hostname?"
 
' Create a new WshNetwork object to access network properties.
Set WshNetwork = WScript.CreateObject("WScript.Network")
 
Text = Text & "Computer name : " & WshNetwork.ComputerName & vbCrLf
Text = Text & "Domain : " & WshNetwork.UserDomain & vbCrLf
Text = Text & "User name : " & WshNetwork.UserName & vbCrLf & vbCrLf
Text = Text & "Do you want to rename this computer?"
 
If MsgBox(Text, vbYesNo + vbQuestion, Title) = vbyes Then
	Dim strComputerName, objWMIService, objComputer, returnCode
 
	strComputerName = InputBox("Enter a new machine name for this computer:", "Rename Computer")
 
	If strComputerName <> "" Then 
 
		Set objWMIService = GetObject("Winmgmts:root\cimv2") 
 
		' Call always gets only one Win32_ComputerSystem object. 
		For Each objComputer in objWMIService.InstancesOf("Win32_ComputerSystem")
			ReturnCode = objComputer.Rename(strComputerName) 
		Next
		If ReturnCode <> 0 Then
			MsgBox "There was a problem changing the computer name.  System error code : " & ReturnCode
		Else
			If MsgBox("Changes made.  Do you wish to restart the computer?", vbYesNo + vbQuestion, Title) = vbyes Then 
				objShell.Run "rundll32 shell32.dll,SHExitWindowsEx 2", 1, False
			Else 
				MsgBox "You must restart computer for changes to take effect"
			End If 
		End If 
	End If 
End If 
Sub ElevateIfNeeded
	If GetOsVersionNumber > 6.0 Then 'Windows Vista or higher
		If NOT UserPerms("ELEVATED") Then
			Set oShell = CreateObject("Shell.Application")
			oShell.ShellExecute "wscript.exe", WScript.ScriptFullName, "", "runas", 1
			WScript.Quit 0
		End If
	End If 
End Sub

Function UserPerms (PermissionQuery)          
	UserPerms = False  ' False unless proven otherwise           
	Dim CheckFor, CmdToRun         

	Select Case Ucase(PermissionQuery)           
		'Setup aliases here           
		Case "ELEVATED"           
			CheckFor =  "S-1-16-12288"           
		Case "ADMIN"           
			CheckFor =  "S-1-5-32-544"           
		Case "ADMINISTRATOR"           
			CheckFor =  "S-1-5-32-544"           
		Case Else                  
			CheckFor = PermissionQuery                  
	End Select           

	CmdToRun = "%comspec% /c whoami /all | findstr /I /C:""" & CheckFor & """"  

	Dim oShell, returnValue        
	Set oShell = CreateObject("WScript.Shell")  
	returnValue = oShell.Run(CmdToRun, 0, true)     
	If returnValue = 0 Then UserPerms = True                   
End Function


Function GetOsVersionNumber()
	Dim oShell, sOStype, sOSversion
	Set oShell = CreateObject("Wscript.Shell")

	On Error Resume Next

	sOStype = oShell.RegRead(_
		"HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions\ProductType")

	If Err.Number<>0 Then
		Err.Clear

		sOStype = oShell.RegRead(_
			"HKLM\SOFTWARE\Microsoft\Windows" & _
			"\CurrentVersion\VersionNumber")

	Else ' OS is NT based
		sOSversion = oShell.RegRead(_
			"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
		If Err.Number<>0 Then
			GetOsVersion = "Unknown NTx"
			Exit Function
		End If
	End If

	SetLocale "en-us"
	GetOsVersionNumber = CDbl(sOSversion)
End Function

Open in new window

0

Featured Post

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now