Solved

Rename and Reboot Machine

Posted on 2009-07-06
2
636 Views
Last Modified: 2013-11-26
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
Comment
Question by:dlnewman70
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 1

Expert Comment

by:nailgg
ID: 24791812
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
 

Accepted Solution

by:
dlnewman70 earned 0 total points
ID: 24794827
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

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

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

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.

726 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