boisorbe | j'ai trouve ca aussi mais pas essaye non plus
Code :
- '********************************************************************
- '*
- '* 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, _
- ByRef intArgIter)
- blnGetArg = False 'failure, changed to True upon successful completion
- If Len(Wscript.Arguments(intArgIter)) > 2 then
- If Mid(Wscript.Arguments(intArgIter),3,1) = ":" then
- If Len(Wscript.Arguments(intArgIter)) > 3 then
- strVar = Right(Wscript.Arguments(intArgIter), _
- Len(Wscript.Arguments(intArgIter)) - 3)
- blnGetArg = True
- Exit Function
- Else
- intArgIter = intArgIter + 1
- If intArgIter > (Wscript.Arguments.Count - 1) Then
- Call Wscript.Echo( "Invalid " & StrVarName & "." )
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- strVar = Wscript.Arguments.Item(intArgIter)
- If Err.Number Then
- Call Wscript.Echo( "Invalid " & StrVarName & "." )
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- If InStr(strVar, "/" ) Then
- Call Wscript.Echo( "Invalid " & StrVarName)
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- blnGetArg = True 'success
- End If
- Else
- strVar = Right(Wscript.Arguments(intArgIter), _
- Len(Wscript.Arguments(intArgIter)) - 2)
- blnGetArg = True 'success
- Exit Function
- End If
- Else
- intArgIter = intArgIter + 1
- If intArgIter > (Wscript.Arguments.Count - 1) Then
- Call Wscript.Echo( "Invalid " & StrVarName & "." )
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- strVar = Wscript.Arguments.Item(intArgIter)
- If Err.Number Then
- Call Wscript.Echo( "Invalid " & StrVarName & "." )
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- If InStr(strVar, "/" ) Then
- Call Wscript.Echo( "Invalid " & StrVarName)
- Call Wscript.Echo( "Please check the input and try again." )
- Exit Function
- End If
- blnGetArg = True 'success
- End If
- End Function
- '********************************************************************
- '*
- '* Function blnConnect()
- '*
- '* Purpose: Connects to machine strServer.
- '*
- '* Input: strServer a machine name
- '* strNameSpace a namespace
- '* strUserName name of the current user
- '* strPassword password of the current user
- '*
- '* Output: objService is returned as a service object.
- '* strServer is set to local host if left unspecified
- '*
- '********************************************************************
- Private Function blnConnect(ByVal strNameSpace, _
- ByVal strUserName, _
- ByVal strPassword, _
- ByRef strServer, _
- ByRef objService)
- ON ERROR RESUME NEXT
- Dim objLocator, objWshNet
- blnConnect = False 'There is no error.
- 'Create Locator object to connect to remote CIM object manager
- Set objLocator = CreateObject("WbemScripting.SWbemLocator" )
- If Err.Number then
- Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _
- " occurred in creating a locator object." )
- If Err.Description <> "" Then
- Call Wscript.Echo( "Error description: " & Err.Description & "." )
- End If
- Err.Clear
- blnConnect = True 'An error occurred
- Exit Function
- End If
- 'Connect to the namespace which is either local or remote
- Set objService = objLocator.ConnectServer (strServer, strNameSpace, _
- strUserName, strPassword)
- ObjService.Security_.impersonationlevel = 3
- If Err.Number then
- Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _
- " occurred in connecting to server " _
- & strServer & "." )
- If Err.Description <> "" Then
- Call Wscript.Echo( "Error description: " & Err.Description & "." )
- End If
- Err.Clear
- blnConnect = True 'An error occurred
- End If
- 'Get the current server's name if left unspecified
- If IsEmpty(strServer) Then
- Set objWshNet = CreateObject("Wscript.Network" )
- strServer = objWshNet.ComputerName
- End If
- End Function
- '********************************************************************
- '*
- '* Sub VerifyHostIsCscript()
- '*
- '* Purpose: Determines which program is used to run this script.
- '*
- '* Input: None
- '*
- '* Output: If host is not cscript, then an error message is printed
- '* and the script is aborted.
- '*
- '********************************************************************
- Sub VerifyHostIsCscript()
- ON ERROR RESUME NEXT
- Dim strFullName, strCommand, i, j, intStatus
- strFullName = WScript.FullName
- If Err.Number then
- Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & " occurred." )
- If Err.Description <> "" Then
- Call Wscript.Echo( "Error description: " & Err.Description & "." )
- End If
- intStatus = CONST_ERROR
- End If
- i = InStr(1, strFullName, ".exe", 1)
- If i = 0 Then
- intStatus = CONST_ERROR
- Else
- j = InStrRev(strFullName, "\", i, 1)
- If j = 0 Then
- intStatus = CONST_ERROR
- Else
- strCommand = Mid(strFullName, j+1, i-j-1)
- Select Case LCase(strCommand)
- Case "cscript"
- intStatus = CONST_CSCRIPT
- Case "wscript"
- intStatus = CONST_WSCRIPT
- Case Else 'should never happen
- Call Wscript.Echo( "An unexpected program was used to " _
- & "run this script." )
- Call Wscript.Echo( "Only CScript.Exe or WScript.Exe can " _
- & "be used to run this script." )
- intStatus = CONST_ERROR
- End Select
- End If
- End If
- If intStatus <> CONST_CSCRIPT Then
- Call WScript.Echo( "Please run this script using CScript." & vbCRLF & _
- "This can be achieved by" & vbCRLF & _
- "1. Using ""CScript Restart.vbs arguments"" for Windows 95/98 or" _
- & vbCRLF & "2. Changing the default Windows Scripting Host " _
- & "setting to CScript" & vbCRLF & " using ""CScript " _
- & "//H:CScript //S"" and running the script using" & vbCRLF & _
- " ""Restart.vbs arguments"" for Windows NT/2000." )
- WScript.Quit
- End If
- End Sub
- '********************************************************************
- '*
- '* Sub WriteLine()
- '* Purpose: Writes a text line either to a file or on screen.
- '* Input: strMessage the string to print
- '* objFile an output file object
- '* Output: strMessage is either displayed on screen or written to a file.
- '*
- '********************************************************************
- Sub WriteLine(ByVal strMessage, ByVal objFile)
- On Error Resume Next
- If IsObject(objFile) then 'objFile should be a file object
- objFile.WriteLine strMessage
- Else
- Call Wscript.Echo( strMessage )
- End If
- End Sub
- '********************************************************************
- '*
- '* Function blnErrorOccurred()
- '*
- '* Purpose: Reports error with a string saying what the error occurred in.
- '*
- '* Input: strIn string saying what the error occurred in.
- '*
- '* Output: displayed on screen
- '*
- '********************************************************************
- Private Function blnErrorOccurred (ByVal strIn)
- If Err.Number Then
- Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & ": " & strIn)
- If Err.Description <> "" Then
- Call Wscript.Echo( "Error description: " & Err.Description)
- End If
- Err.Clear
- blnErrorOccurred = True
- Else
- blnErrorOccurred = False
- End If
- End Function
- '********************************************************************
- '*
- '* Function blnOpenFile
- '*
- '* Purpose: Opens a file.
- '*
- '* Input: strFileName A string with the name of the file.
- '*
- '* Output: Sets objOpenFile to a FileSystemObject and setis it to
- '* Nothing upon Failure.
- '*
- '********************************************************************
- Private Function blnOpenFile(ByVal strFileName, ByRef objOpenFile)
- ON ERROR RESUME NEXT
- Dim objFileSystem
- Set objFileSystem = Nothing
- If IsEmpty(strFileName) OR strFileName = "" Then
- blnOpenFile = False
- Set objOpenFile = Nothing
- Exit Function
- End If
- 'Create a file object
- Set objFileSystem = CreateObject("Scripting.FileSystemObject" )
- If blnErrorOccurred("Could not create filesystem object." ) Then
- blnOpenFile = False
- Set objOpenFile = Nothing
- Exit Function
- End If
- 'Open the file for output
- Set objOpenFile = objFileSystem.OpenTextFile(strFileName, 8, True)
- If blnErrorOccurred("Could not open" ) Then
- blnOpenFile = False
- Set objOpenFile = Nothing
- Exit Function
- End If
- blnOpenFile = True
- End Function
- '********************************************************************
- '* *
- '* End of File *
- '* *
- '********************************************************************
|
---------------
"Tout ce que je sais c'est que je ne sais rien" Socrate
|