• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 679
  • Last Modified:

Rename and Reboot Machine

Im trying to write this script that will rename and reboot the machine. The first portion shown runs fine, the dialog box comes up and I enter in my new pc name.  The second part is the vb command to reboot the machine, it actually calls a batch file. The script runs the first portion and then ends.  However if I take the second half and create a separate vb script it runs fine.

I have two questions:

1. How can I get the entire script to run? Am I missing something?
2. Is there any way I can create a list box rather than an Input Box and prepopulate the listbox with a list of names?
Name = InputBox("Enter the new computer name below and click OK to continue","Rename: Step 1")
 
Password = "password"
Username = "admin"
 
Set objWMIService = GetObject("Winmgmts:root\cimv2")
 
' Call always gets only one Win32_ComputerSystem object.
For Each objComputer in _
   objWMIService.InstancesOf("Win32_ComputerSystem")
 
       Return = objComputer.rename(Name,Password,User)
       If Return <> 0 Then
          WScript.Echo "Rename failed. Error = " & Err.Number
       Else
          WScript.Echo "Rename succeeded." & " Reboot for new name to go into effect"
       
        Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate,(RemoteShutdown)}//" & mname).ExecQuery("select * from Win32_OperatingSystem where Primary=true")
        for each OpSys in OpSysSet
            OpSys.Reboot()
next
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("%comspec% /K C:\DemoUtilities\Installs\Windows\Rename_machine\shutdown.bat"), 1, True
end if
next

Open in new window

0
dlnewman70
Asked:
dlnewman70
1 Solution
 
nailggCommented:
Hi dlnewman70;

I debugged your code in vb6, and found some little mistakes.

For example the dimension you defined as "Return" is not a suitable word to being a dimension name. Change it as "ReturnX" for example.

There is a property named as "Name" too, you must change it too.

I hope these can help you.
0
 
dlnewman70Author Commented:
Found solution

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
                                                                                                                                'Set objShell = WScript.CreateObject("WScript.Shell")
                                'objShell.Run "rundll32 shell32.dll,SHExitWindowsEx 2", 1, False
                                                                                                                                WScript.Echo "Rebooting..."
                                                                                                                                set objWSHShell = WScript.CreateObject("WScript.Shell")
                                                                                                                                objWSHShell.Run "shutdown.exe /r"
                        Else 
                                MsgBox "You must restart computer for changes to take effect"
                        End If 
                End If 
        End If 
End If

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

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