My question I have virtual server that is connected to a UPS via USB and I want to turn off 5 servers in case that the fall supply voltage.
I have managed with VBScript turn off the servers but only an administrator's password is the same to all of the servers:
'This Scrip Will Work Only if the Root password is the same'strComputer = "Enter Remote Computer Name"Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Shutdown)}!\\" & _ strComputer & "\root\cimv2")Set colOperatingSystems = objWMIService.ExecQuery _ ("Select * from Win32_OperatingSystem")For Each objOperatingSystem in colOperatingSystems ObjOperatingSystem.Shutdown(1)Next
Very much helped to understand ,It is new for VBscript
It took me a few days to understand the script.
but i did not manage to run the script automatic .
Dim strComputer, RestartMode, debug, strUsername, strPasswdDebug = 1'declare arguments variableSet objArgs = WScript.Arguments'if there are command-line arguments, then...If objargs.Count ThenFor I = 0 to objArgs.Count - 1'If debug = 1 Then wscript.echo "argument: " & objargs(i)'check to find the computername that is specifiedIf InStr(1,LCase(objargs(I)),"computer:") ThenOn Error Resume Next'split into an array, using : as a delimiterstrMDArray = split(objargs(I),":") 'set strcomputer to be what follows the ':'strComputer = strMDArray(1)'Next, find what action you wish to perform on strcomputer ElseIf InStr(1,LCase(objargs(I)),"action:") Then'split into array againstrActionArray = split(objargs(I),":")'set restartmode to what follows the ':'restartmode = Trim(LCase(strActionArray(1)))' Sam Add Some code start hereElseIf InStr(1,LCase(objargs(I)),"User:") Then'split into array againstrActionArray = split(objargs(I),":")'set restartmode to what follows the ':'strUsername = Trim(LCase(strActionArray(1)))ElseIf InStr(1,LCase(objargs(I)),"Password:") Then'split into array againstrActionArray = split(objargs(I),":")'set restartmode to what follows the ':'strPasswd = Trim(LCase(strActionArray(1)))' Sam Add Some code end hereEnd IfNext'call chkcomputername to verify that there is something' entered.Call ChkComputerName'if the word reboot appears in the restartmode var, then...If InStr(LCase(restartmode),"reboot") Then RestartMode = 0ElseIf InStr(LCase(restartmode),"logoff") Then RestartMode = 2ElseIf InStr(LCase(restartmode),"shutdown") Then RestartMode = 1Else'if the restartmode variable is not correct, then quitwscript.echo "You must use the following syntax when defining an action: reboot|logoff|shutdown" & vbcrlf _& vbcrlf & "Invalid syntax: [" & restartmode & "] now quitting." wscript.quitEnd IfElse'if no command-line parameters were passed, then prompt with inputbox' first for the computername strComputer=InputBox("Perform restart action on what computer?","Enter Computer Name",strComputer)'find out if computername is validCall ChkComputerName'prompt for restartmode using inputboxRestartMode = InputBox("I would like to perform the following action on " & strComputer & ":" & vbcrlf & vbcrlf _ & "0 - Restart " & strComputer & vbcrlf _& "1 - Logoff " & strComputer & vbcrlf _& "2 - Shutdown " & strComputer & vbcrlf _ & vbcrlf,"Restart action",RestartMode)'if no restartmode was specified, then quitIf RestartMode = "" Then wscript.echo "No restart action was specified, now quitting."wscript.quit'if restartmode does not fall between 0 and 2, then quitElseIf RestartMode < 0 or Restartmode > 2 Thenwscript.echo "You must select a valid option between 0 and 3. Script will now exit."wscript.quitEnd IfEnd If'put computername into uppercasestrComputer = UCase(strComputer)'Call actual code to restart the PCCall RestartActionSub ChkComputerName'if no computername is specified (blank), then quitIf strComputer = "" Then wscript.echo "You must define a computer name after the computer: argument. None " _& "were specified, now quitting."wscript.quit'if computername contains two backslashes, then quitElseIf InStr(strComputer,"\\") Thenwscript.echo "Please specify the computer name without the leading backslashes. " _& "Now quitting." wscript.quitEnd IfEnd SubSub RestartAction On Error GoTo 0' Sam Comment out some lines of code, and add a prompt box to get the username and password input from user. ' ===== Sam added & modified codes start here ===== strUsername=InputBox("Please input remote user's account?","Enter the account",strUsername) strPasswd=InputBox("Please input remote user's password?","Enter the password",strPasswd) Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objSWbemServices = objSWbemLocator.ConnectServer _ (strComputer, "root\cimv2", strUsername, strPasswd) objSWbemServices.Security_.ImpersonationLevel = 3 'Call WMI query to collect parameters for reboot action 'Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//"_ '& strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem"_ '& " where Primary=true") Set OpSysSet = objSWbemServices.ExecQuery("select * from Win32_OperatingSystem"_ & " where Primary=true") ' ===== Sam added & modified code end here =====Dim OpSysSet, OpSys If debug = 1 Then wscript.echo "Computer: " & strComputer & vbcrlf _ & "Restart Action: " & RestartMode'set PC to rebootIf RestartMode = 0 Then For each OpSys in OpSysSet opSys.Reboot() Next 'set PC to logoffElseIf RestartMode = 1 Then Const EWX_LOGOFF = 0 For each OpSys in OpSysSet opSys.win32shutdown EWX_LOGOFF Next 'set PC to shutdownElseIf RestartMode = 2 Then For each OpSys in OpSysSet opSys.Shutdown() Next End IfEnd Sub
Very much helped to understand ,It is new for VBscript
It took me a few days to understand the script.
but i did not manage to run the script automatic .
Open in new window
Thanks
ItzhakBM