源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Restart.vbs源代码可以重启远程电脑的vbs

  • 时间:2021-05-24 22:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Restart.vbs源代码可以重启远程电脑的vbs
[u]复制代码[/u] 代码如下:
'******************************************************************** '* '* File:           Restart.vbs '* Created:        March 1999 '* Version:        1.0 '* '*  Main Function:  Shutsdown, PowerOff, LogOff, Restarts a machine. '* '*  Restart.vbs    /S <server> [/U <username>] [/W <password>]  '*                 [/O <outputfile>] [/L} [/P] [/R] [/Q] [/F] [/T <time in seconds>] '* '* Copyright (C) 1999 Microsoft Corporation '* '******************************************************************** OPTION EXPLICIT     'Define constants     CONST CONST_ERROR                   = 0     CONST CONST_WSCRIPT                 = 1     CONST CONST_CSCRIPT                 = 2     CONST CONST_SHOW_USAGE              = 3     CONST CONST_PROCEED                 = 4     'Shutdown Method Constants     CONST CONST_SHUTDOWN                = 1     CONST CONST_LOGOFF                  = 0     CONST CONST_POWEROFF                = 8     CONST CONST_REBOOT                  = 2     CONST CONST_FORCE_REBOOT            = 6     CONST CONST_FORCE_POWEROFF          = 12     CONST CONST_FORCE_LOGOFF            = 4     CONST CONST_FORCE_SHUTDOWN          = 5     'Declare variables     Dim intOpMode, i     Dim strServer, strUserName, strPassword, strOutputFile     Dim blnLogoff, blnPowerOff, blnReBoot, blnShutDown     Dim blnForce     Dim intTimer     Dim UserArray(3)     Dim MyCount     'Make sure the host is csript, if not then abort     VerifyHostIsCscript()     'Parse the command line     intOpMode = intParseCmdLine(strServer     ,  _                                 strUserName   ,  _                                 strPassword   ,  _                                 strOutputFile ,  _                                 blnLogoff     ,  _                                 blnPowerOff   ,  _                                 blnReBoot     ,  _                                 blnShutdown   ,  _                                 blnForce      ,  _                                 intTimer         )     Select Case intOpMode         Case CONST_SHOW_USAGE             Call ShowUsage()         Case CONST_PROCEED                              Call Reboot(strServer     , _                           strOutputFile , _                           strUserName   , _                           strPassword   , _                           blnReboot     , _                           blnForce      , _                           intTimer        )             Call LogOff(strServer     , _                           strOutputFile , _                           strUserName   , _                           strPassword   , _                           blnLogoff     , _                           blnForce      , _                           intTimer        )             Call PowerOff(strServer     , _                           strOutputFile , _                           strUserName   , _                           strPassword   , _                           blnPowerOff   , _                           blnForce      , _                           intTimer        )             Call ShutDown(strServer     , _                           strOutputFile , _                           strUserName   , _                           strPassword   , _                           blnShutDown   , _                           blnForce      , _                           intTimer        )         Case CONST_ERROR             'Do Nothing         Case Else                    'Default -- should never happen             Call Wscript.Echo("Error occurred in passing parameters.")     End Select '******************************************************************** '* '* Sub Reboot() '* '* Purpose: Reboots a machine. '* '* Input:   strServer           a machine name '*          strOutputFile       an output file name '*          strUserName         the current user's name '*          strPassword         the current user's password '*          blnForce            specifies whether to force the logoff '*          intTimer            specifies the amount of time to perform the function '* '* Output:  Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub Reboot(strServer, strOutputFile, strUserName, strPassword, blnReboot, blnForce, intTimer)     ON ERROR RESUME NEXT     Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance     Dim strQuery, strMessage     Dim intStatus     ReDim strID(0), strName(0)     if blnreboot = false then          Exit Sub     End if     if intTimer > 0 then         wscript.echo "Rebooting machine " & strServer & " in " & intTimer & " seconds..."         wscript.sleep (intTimer * 1000)     End if     'Open a text file for output if the file is requested     If Not IsEmpty(strOutputFile) Then         If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then             Call Wscript.Echo ("Could not open an output file.")             Exit Sub         End If     End If     'Establish a connection with the server.     If blnConnect("root\cimv2" , _                    strUserName , _                    strPassword , _                    strServer   , _                    objService  ) Then         Call Wscript.Echo("")         Call Wscript.Echo("Please check the server name, " _                         & "credentials and WBEM Core.")         Exit Sub     End If     strID(0) = ""     strName(0) = ""     strMessage = ""     strQuery = "Select * From Win32_OperatingSystem"     Set objEnumerator = objService.ExecQuery(strQuery,,0)     If Err.Number Then         Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."         If Err.Description <> "" Then             Print "Error description: " & Err.Description & "."         End If         Err.Clear         Exit Sub     End If     i = 0     For Each objInstance in objEnumerator         If blnForce Then             intStatus = objInstance.Win32ShutDown(CONST_FORCE_REBOOT)         Else             intStatus = objInstance.Win32ShutDown(CONST_REBOOT)         End If         IF intStatus = 0 Then             strMessage = "Reboot a machine " & strServer & "."         Else             strMessage = "Failed to reboot a machine " & strServer & "."         End If         Call WriteLine(strMessage,objOutputFile)     Next     If IsObject(objOutputFile) Then         objOutputFile.Close         Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")     End If End Sub '******************************************************************** '* '* Sub LogOff() '* '* Purpose: Logs off the user currently logged onto a machine. '* '* Input:   strServer           a machine name '*          strOutputFile       an output file name '*          strUserName         the current user's name '*          strPassword         the current user's password '*          blnForce            specifies whether to force the logoff '*          intTimer            specifies the amount of time to preform the function '* '* Output:  Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub LogOff(strServer, strOutputFile, strUserName, strPassword, blnLogoff, blnForce, intTimer)     ON ERROR RESUME NEXT     Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance     Dim strQuery, strMessage     Dim intStatus     ReDim strID(0), strName(0)      If blnlogoff = false then           Exit Sub      End if     if intTimer > 1 then       wscript.echo "Logging off machine " & strServer & " in " & intTimer & " seconds..."         wscript.sleep (intTimer * 1000)     End if     'Open a text file for output if the file is requested     If Not IsEmpty(strOutputFile) Then         If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then             Call Wscript.Echo ("Could not open an output file.")             Exit Sub         End If     End If     'Establish a connection with the server.     If blnConnect("root\cimv2" , _                    strUserName , _                    strPassword , _                    strServer   , _                    objService  ) Then         Call Wscript.Echo("")         Call Wscript.Echo("Please check the server name, " _                         & "credentials and WBEM Core.")         Exit Sub     End If     strID(0) = ""     strName(0) = ""     strMessage = ""     strQuery = "Select * From Win32_OperatingSystem"     Set objEnumerator = objService.ExecQuery(strQuery,,0)     If Err.Number Then         Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."         If Err.Description <> "" Then             Print "Error description: " & Err.Description & "."         End If         Err.Clear         Exit Sub     End If     i = 0     For Each objInstance in objEnumerator         If blnForce Then             intStatus = objInstance.Win32ShutDown(CONST_FORCE_LOGOFF)         Else             intStatus = objInstance.Win32ShutDown(CONST_LOGOFF)         End If         IF intStatus = 0 Then             strMessage = "Logging off the current user on machine " & _                          strServer & "..."         Else             strMessage = "Failed to log off the current user from machine " _                 & strServer & "."         End If         Call WriteLine(strMessage,objOutputFile)     Next     If IsObject(objOutputFile) Then         objOutputFile.Close         Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")     End If End Sub '******************************************************************** '* '* Sub PowerOff() '* '* Purpose: Powers off a machine. '* '* Input:   strServer           a machine name '*          strOutputFile       an output file name '*          strUserName         the current user's name '*          strPassword         the current user's password '*          blnForce            specifies whether to force the logoff '*          intTimer            specifies the amount of time to perform the function '* '* Output:  Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub PowerOff(strServer, strOutputFile, strUserName, strPassword, blnPowerOff, blnForce, intTimer)     ON ERROR RESUME NEXT     Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance     Dim strQuery, strMessage     Dim intStatus     ReDim strID(0), strName(0)       if blnPoweroff = false then              Exit sub       End if     If intTimer > 0 then              wscript.echo "Powering off machine " & strServer & " in " & intTimer & " seconds..."     wscript.sleep (intTimer * 1000)     End if     'Open a text file for output if the file is requested     If Not IsEmpty(strOutputFile) Then         If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then             Call Wscript.Echo ("Could not open an output file.")             Exit Sub         End If     End If     'Establish a connection with the server.     If blnConnect("root\cimv2" , _                    strUserName , _                    strPassword , _                    strServer   , _                    objService  ) Then         Call Wscript.Echo("")         Call Wscript.Echo("Please check the server name, " _                         & "credentials and WBEM Core.")         Exit Sub     End If     strID(0) = ""     strName(0) = ""     strMessage = ""     strQuery = "Select * From Win32_OperatingSystem"     Set objEnumerator = objService.ExecQuery(strQuery,,0)     If Err.Number Then         Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."         If Err.Description <> "" Then             Print "Error description: " & Err.Description & "."         End If         Err.Clear         Exit Sub     End If     i = 0     For Each objInstance in objEnumerator         If blnForce Then             intStatus = objInstance.Win32ShutDown(CONST_FORCE_POWEROFF)         Else             intStatus = objInstance.Win32ShutDown(CONST_POWEROFF)         End If         IF intStatus = 0 Then             strMessage = "Power off machine " & strServer & "."         Else             strMessage = "Failed to power off machine " & strServer & "."         End If         Call WriteLine(strMessage,objOutputFile)     Next     If IsObject(objOutputFile) Then         objOutputFile.Close         Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")     End If End Sub '******************************************************************** '* '* Sub Shutdown() '* '* Purpose: Shutsdown a machine. '* '* Input:   strServer           a machine name '*          strOutputFile       an output file name '*          strUserName         the current user's name '*          strPassword         the current user's password '*          blnForce            specifies whether to force the logoff '*          intTimer            specifies the amount of time to perform the function '* '* Output:  Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub Shutdown(strServer, strOutputFile, strUserName, strPassword, blnShutDown, blnForce, intTimer)     ON ERROR RESUME NEXT     Dim objFileSystem, objOutputFile, objService, objEnumerator, objInstance     Dim strQuery, strMessage     Dim intStatus     ReDim strID(0), strName(0)     If blnShutdown = False then           Exit Sub     End if        if intTimer > 0 then                wscript.echo "Shutting down computer " & strServer & " in " & intTimer & " seconds..."          wscript.sleep (intTimer * 1000)     End if     'Open a text file for output if the file is requested     If Not IsEmpty(strOutputFile) Then         If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then             Call Wscript.Echo ("Could not open an output file.")             Exit Sub         End If     End If     'Establish a connection with the server.     If blnConnect("root\cimv2" , _                    strUserName , _                    strPassword , _                    strServer   , _                    objService  ) Then         Call Wscript.Echo("")         Call Wscript.Echo("Please check the server name, " _                         & "credentials and WBEM Core.")         Exit Sub     End If     strID(0) = ""     strName(0) = ""     strMessage = ""     strQuery = "Select * From Win32_OperatingSystem"     Set objEnumerator = objService.ExecQuery(strQuery,,0)     If Err.Number Then         Print "Error 0x" & CStr(Hex(Err.Number)) & " occurred during the query."         If Err.Description <> "" Then             Print "Error description: " & Err.Description & "."         End If         Err.Clear         Exit Sub     End If     i = 0     For Each objInstance in objEnumerator         If blnForce Then             intStatus = objInstance.Win32ShutDown(CONST_FORCE_SHUTDOWN)         Else             intStatus = objInstance.Win32ShutDown(CONST_SHUTDOWN)         End If         IF intStatus = 0 Then             strMessage = "Shuts down machine " & strServer & "."         Else             strMessage = "Failed to shutdown machine " & strServer & "."         End If         Call WriteLine(strMessage,objOutputFile)     Next     If IsObject(objOutputFile) Then         objOutputFile.Close         Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".")     End If End Sub '******************************************************************** '* '* Function intParseCmdLine() '* '* Purpose: Parses the command line. '* Input:    '* '* Output:  strServer         a remote server ("" = local server") '*          strUserName       the current user's name '*          strPassword       the current user's password '*          strOutputFile     an output file name '*          intTimer          amount of time in seconds '* '******************************************************************** Private Function intParseCmdLine( ByRef strServer,        _                                   ByRef strUserName,      _                                   ByRef strPassword,      _                                   ByRef strOutputFile,    _                                   ByRef blnLogoff,        _                                   ByRef blnShutdown,      _                                   ByRef blnReboot,        _                                   ByRef blnPowerOff,      _                                   ByRef blnForce,         _                                   ByRef intTimer          )     ON ERROR RESUME NEXT     Dim strFlag     Dim intState, intArgIter     Dim objFileSystem     If Wscript.Arguments.Count > 0 Then         strFlag = Wscript.arguments.Item(0)     End If     If IsEmpty(strFlag) Then                'No arguments have been received         Wscript.Echo("Arguments are Required.")         intParseCmdLine = CONST_ERROR         Exit Function     End If     'Check if the user is asking for help or is just confused     If (strFlag="help") OR (strFlag="/h") OR (strFlag="\h") OR (strFlag="-h") _         OR (strFlag = "\?") OR (strFlag = "/?") OR (strFlag = "?") _          OR (strFlag="h") Then         intParseCmdLine = CONST_SHOW_USAGE         Exit Function     End If     'Retrieve the command line and set appropriate variables      intArgIter = 0     Do While intArgIter <= Wscript.arguments.Count - 1         Select Case Left(LCase(Wscript.arguments.Item(intArgIter)),2)             Case "/s"                 intParseCmdLine = CONST_PROCEED                 If Not blnGetArg("Server", strServer, intArgIter) Then                     intParseCmdLine = CONST_ERROR                     Exit Function                 End If                 intArgIter = intArgIter + 1             Case "/o"                 If Not blnGetArg("Output File", strOutputFile, intArgIter) Then                     intParseCmdLine = CONST_ERROR                     Exit Function                 End If                 intArgIter = intArgIter + 1             Case "/u"                 If Not blnGetArg("User Name", strUserName, intArgIter) Then                     intParseCmdLine = CONST_ERROR                     Exit Function                 End If                 intArgIter = intArgIter + 1             Case "/w"                 If Not blnGetArg("User Password", strPassword, intArgIter) Then                     intParseCmdLine = CONST_ERROR                     Exit Function                 End If                 intArgIter = intArgIter + 1             Case "/f"                 blnForce = True                 intArgIter = intArgIter + 1             Case "/r"                 blnReBoot = True                 userarray(0) = blnReBoot                 intArgIter = intArgIter + 1             Case "/q"                 blnPowerOff = True                 userarray(1) = blnPowerOff                 intArgIter = intArgIter + 1             Case "/l"                 blnLogOff = True                 userarray(2) = blnLogoff                 intArgIter = intArgIter + 1             Case "/p"                 blnShutDown = True                 userarray(3) = blnShutDown                 intArgIter = intArgIter + 1             Case "/t"                 If Not blnGetArg("Timer", intTimer, intArgIter) Then                     intParseCmdLine = CONST_ERROR                     Exit Function                 End If                 intArgIter = intArgIter + 1             Case Else 'We shouldn't get here                 Call Wscript.Echo("Invalid or misplaced parameter: " _                    & Wscript.arguments.Item(intArgIter) & vbCRLF _                    & "Please check the input and try again," & vbCRLF _                    & "or invoke with '/?' for help with the syntax.")                 Wscript.Quit         End Select     Loop '** intArgIter <= Wscript.arguments.Count - 1     MyCount = 0     for i = 0 to 3         if userarray(i) = True then             MyCount = Mycount + 1         End if     Next    if Mycount > 1 then          intParseCmdLine = CONST_SHOW_USAGE    End if     If IsEmpty(intParseCmdLine) Then          intParseCmdLine = CONST_ERROR         Wscript.Echo("Arguments are Required.")     End If End Function '******************************************************************** '* '* Sub ShowUsage() '* '* Purpose: Shows the correct usage to the user. '* '* Input:   None '* '* Output:  Help messages are displayed on screen. '* '******************************************************************** Private Sub ShowUsage()     Wscript.Echo ""     Wscript.Echo "Logoffs, Reboots, Powers Off, or Shuts Down a machine."     Wscript.Echo ""     Wscript.Echo "SYNTAX:"     Wscript.Echo "  Restart.vbs [/S <server>] [/U <username>] [/W <password>]"     Wscript.Echo "              [/O <outputfile>] </L> </R> </P> </Q> </F> [/T <time in seconds>]"     Wscript.Echo ""     Wscript.Echo "PARAMETER SPECIFIERS:"     wscript.echo "   /T            Amount of time to perform the function."     Wscript.Echo "   /Q            Perform Shutdown."     Wscript.Echo "   /P            Perform Poweroff."     Wscript.Echo "   /R            Perform Reboot."     Wscript.Echo "   /L            Perform Logoff."     Wscript.Echo "   /F            Force Function."     Wscript.Echo "   server        A machine name."     Wscript.Echo "   username      The current user's name."     Wscript.Echo "   password      Password of the current user."     Wscript.Echo "   outputfile    The output file name."     Wscript.Echo ""     Wscript.Echo "EXAMPLE:"     Wscript.Echo "1. cscript Restart.vbs /S MyMachine2 /R"     Wscript.Echo "   Reboots the current machine MyMachine2."     Wscript.Echo "2. cscript Restart.vbs /S MyMachine2 /R /F"     Wscript.Echo "   Forces MyMachine2 to reboot."     Wscript.Echo "3. cscript Restart.vbs /S MyMachine2 /R /T 30"     Wscript.Echo "   Reboots the current machine MyMachine2 in 30 seconds."     Wscript.Echo "NOTE:"     Wscript.Echo "   The force option will make the machine perform the function even " _                & "if there are"     Wscript.Echo "   open and unsaved docuements on the screen." End Sub '******************************************************************** '* General Routines '******************************************************************** '******************************************************************** '* '* Function strPackString() '* '* Purpose: Attaches spaces to a string to increase the length to intWidth. '* '* Input:   strString   a string '*          intWidth    the intended length of the string '*          blnAfter    Should spaces be added after the string? '*          blnTruncate specifies whether to truncate the string or not if '*                      the string length is longer than intWidth '* '* Output:  strPackString is returned as the packed string. '* '******************************************************************** Private Function strPackString( ByVal strString, _                                 ByVal intWidth,  _                                 ByVal blnAfter,  _                                 ByVal blnTruncate)     ON ERROR RESUME NEXT     intWidth      = CInt(intWidth)     blnAfter      = CBool(blnAfter)     blnTruncate   = CBool(blnTruncate)     If Err.Number Then         Call Wscript.Echo ("Argument type is incorrect!")         Err.Clear         Wscript.Quit     End If     If IsNull(strString) Then         strPackString = "null" & Space(intWidth-4)         Exit Function     End If     strString = CStr(strString)     If Err.Number Then         Call Wscript.Echo ("Argument type is incorrect!")         Err.Clear         Wscript.Quit     End If     If intWidth > Len(strString) Then         If blnAfter Then             strPackString = strString & Space(intWidth-Len(strString))         Else             strPackString = Space(intWidth-Len(strString)) & strString & " "         End If     Else         If blnTruncate Then             strPackString = Left(strString, intWidth-1) & " "         Else             strPackString = strString & " "         End If     End If End Function '******************************************************************** '*  '*  Function blnGetArg() '* '*  Purpose: Helper to intParseCmdLine() '*  '*  Usage: '* '*     Case "/s"  '*       blnGetArg ("server name", strServer, intArgIter) '* '******************************************************************** Private Function blnGetArg ( ByVal StrVarName,   _                              ByRef strVar,       _                           &
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部