Solved

Renaming of Computer's Name using VBScript

Posted on 2007-12-06
7
18,312 Views
Last Modified: 2011-06-06
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
Comment
Question by:Manfredtoo
7 Comments
 
LVL 2

Accepted Solution

by:
biztopia earned 500 total points
ID: 20418109
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
 

Author Comment

by:Manfredtoo
ID: 20418673
biztopia: thanks man... it works great.=)
0
 
LVL 1

Expert Comment

by:017087594
ID: 24578972
can someone please help im getting "System error code : 5
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Expert Comment

by:varcom
ID: 24943766
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
 
LVL 1

Expert Comment

by:ranga_matta
ID: 25401349
can someone please help im getting "System error code : 5
0
 

Expert Comment

by:Net-tech1
ID: 35919046
Varcom,
Add
Dim objShell to line 2
0
 

Expert Comment

by:Net-tech1
ID: 35919080
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Log files are useful in diagnosing and repairing problems.  This is a list of common log files and their standard locations that I've compiled.   While this is not exhaustive, it is a pretty good list that I've found to be useful.  I may update it f…
This is a little timesaver I have been using for setting up Microsoft Small Business Server (SBS) in the simplest possible way. It may not be appropriate for every customer. However, when you get a situation where the person who owns the server is i…
In this video, we discuss why the need for additional vertical screen space has become more important in recent years, namely, due to the transition in the marketplace of 4x3 computer screens to 16x9 and 16x10 screens (so-called widescreen format). …
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…

895 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now