Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0"?>
- <package>
- <?component error="true" debug="true"?>
- <component>
- <registration
- description="VBS Library"
- progid="Microsoft.CmdLib"
- version="1"
- classid="{6D335ADF-8270-4805-A044-2B6A09476396}">
- </registration>
- <public>
- <comment>
- ******************************************************************************
- Copyright (c) Microsoft Corporation. All rights reserved.
- Module Name: CmdLib.wsc
- Abstract: This module contains the common functionality.
- use "regsvr32 CmdLib.wsc" if installing on new OS
- *******************************************************************************
- </comment>
- <method name="checkScript"/>
- <method name="vbPrintf"/>
- <method name="getHostName"/>
- <method name="getUserName"/>
- <method name="getDomainName"/>
- <method name="LengthinBytes"/>
- <method name="getPassword"/>
- <method name="trapError"/>
- <method name="getArguments"/>
- <method name="wmiConnect"/>
- <method name="packString"/>
- <method name="getMaxStringLen"/>
- <method name="showResults"/>
- <method name="validateDateTime"/>
- <method name="changeToWMIDateTime"/>
- <method name="matchPattern"/>
- <property name="ScriptingHost" internalName="WScript"/>
- </public>
- <resource id="PATTERN_VBPRINTF">%\d</resource>
- <resource id="L_INVALID_ERRORMESSAGE_TYPE_AS_INPUT">ERROR: Invalid type passed as input to the function.</resource>
- <resource id="L_INVALID_ERRORMESSAGE_ARG_NUMBER_AS_INPUT_ERRORMESSAGE">ERROR: Invalid number of arguments passed to the Print function.</resource>
- <resource id="TEXT_NA">N/A</resource>
- <resource id="OBJ_SYSTEMINFO_CLASS">Win32_ComputerSystem</resource>
- <resource id="L_INVALID_ERRORMESSAGE">ERROR: Invalid '%1'.</resource>
- <resource id="L_INVALID_SYNTAX_ERRORMESSAGE">ERROR: Invalid Syntax. Value expected for '%1'.</resource>
- <resource id="L_HELP_SYNTAX_MESSAGE">Type "%1 /?" for usage.</resource>
- <resource id="HINT_CHECK_INPUT">Please check the input and try again.</resource>
- <resource id="L_ERROR_CHECK_VBSCRIPT_VERSION_ERRORMESSAGE">Unexpected Error: Please check the current version of VBScript.</resource>
- <resource id="PATTERN_NEGATIVE_NUMBER">^\-\d|\d+$</resource>
- <resource id="CONST_NO_MATCHES_FOUND">0</resource>
- <resource id="OBJ_SCRIPTING_LOCATOR">WbemScripting.SWbemLocator</resource>
- <resource id="L_DISPLAY_FMT_TABLE_TEXT">TABLE</resource>
- <resource id="L_DISPLAY_FMT_CSV_TEXT">CSV</resource>
- <resource id="L_DISPLAY_FMT_LIST_TEXT">LIST</resource>
- <resource id="EXIT_SUCCESS">0</resource>
- <resource id="EXIT_INVALID_PARAM">999</resource>
- <resource id="EXIT_UNEXPECTED">255</resource>
- <resource id="EXIT_INVALID_INPUT">254</resource>
- <resource id="EXIT_METHOD_FAIL">250</resource>
- <resource id="L_INVALID_ERRORMESSAGE_TIME_ERRORMESSAGE">ERROR: Invalid time '%1' specified for the filter '%2'.</resource>
- <resource id="L_INVALID_ERRORMESSAGE_DATE_ERRORMESSAGE">ERROR: Invalid date '%1' specified for the filter '%2'.</resource>
- <resource id="L_ENTER_PASSWORD_TEXT">Enter the Password:</resource>
- <resource id="L_PROCESSING_TEXT">Processing...</resource>
- <resource id="OBJ_SCRIPT_PASSWORD">ScriptPW.Password.1</resource>
- <resource id="L_HINT_CHECK_PASSWORD_DLL_MESSAGE">HINT: Please check if ScriptPW.dll is registered in the system.</resource>
- <resource id="CONST_ERROR">0</resource>
- <resource id="CONST_CSCRIPT">2</resource>
- <resource id="L_WARRING_LOCAL_CREDENTIALS_SUPPLIED_MESSAGE">WARNING: Ignoring the user credentials for the local connection.</resource>
- <resource id="CONST_LOCAL_CREDENTIALS_SUPPLIED">-2147217308</resource>
- <script language="VBScript">
- <![CDATA[
- ' All the functions which are used in common across all the vbs scripts are defined below
- ' Function used to find whether CScript is used or not
- '********************************************************************
- '* Function: checkScript
- '*
- '* Purpose: Determines which program is used to run this script.
- '*
- '* Input: None
- '*
- '* Output: intChkProgram is set to one of CONST_ERROR or CONST_CSCRIPT.
- '*
- '********************************************************************
- Function checkScript()
- ON ERROR RESUME NEXT
- Err.Clear
- Dim strFullName 'program with its full path - used to execute the script
- Dim strCommand 'name of program without extension (like exe, Eg:CScript)
- Dim intExe_Index 'to calculate the position of .exe in strFullName
- Dim intSlash_Index 'to calculate the position of \ (slash) in strFullName
- 'strFullName should be something like C:\WINDOWS\COMMAND\CSCRIPT.EXE
- strFullName = WScript.FullName
- If Err.Number then
- Wscript.Echo "Error 0x" & CStr(Hex(Err.Number))
- If Err.Description <> "" Then
- Wscript.Echo "Error description: " & Err.Description & "."
- End If
- Err.Clear
- checkScript = getResource("CONST_ERROR")
- Exit Function
- End If
- intExe_Index = InStr(1, strFullName, ".exe", 1)
- If intExe_Index = 0 Then
- checkScript = getResource("CONST_ERROR")
- Exit Function
- Else
- intSlash_Index = InStrRev(strFullName, "\", intExe_Index, 1)
- If intSlash_Index = 0 Then
- checkScript = getResource("CONST_ERROR")
- Exit Function
- Else
- strCommand = Mid(strFullName, intSlash_Index+1, _
- intExe_Index-intSlash_Index-1)
- If LCase(strCommand) = LCase("cscript") Then
- checkScript = getResource("CONST_CSCRIPT")
- Else
- checkScript = getResource("CONST_ERROR")
- End If
- End If 'If intSlash_Index = 0 Then
- End If 'If intExe_Index = 0 Then
- End Function
- ' Subroutine which implements normal printf functionality
- '********************************************************************
- '* Sub: vbPrintf
- '*
- '* Purpose: Simulates the Printf function.
- '*
- '* Input: [in] strPhrase the string with '%1 %2 &3 ' in it
- '* [in] args the values to replace '%1 %2 ..etc' with
- '*
- '* Output: Displays the string on the screen
- '* (All the '%x' variables in strPhrase is replaced by the
- '* corresponding elements in the array)
- '*
- '********************************************************************
- Sub vbPrintf(ByVal strPhrase, ByVal args )
- ON ERROR RESUME NEXT
- Err.Clear
- 'Changed for localization
- Dim strMatchPattern ' the pattern to match - '%[number]'
- Dim intValuesCount ' to get the count of matching results
- Dim i ' used in the loop
- Dim strTemp ' to store temporally the given input string for formatting
- strTemp = strPhrase
- ' look out for '%[number]' in the given string
- strMatchPattern = getResource("PATTERN_VBPRINTF") '"\%[number]"
- intValuesCount = matchPattern (strMatchPattern, strTemp)
- If intValuesCount <> 0 Then
- ' if present then replace '%1 %2 %3' in the string by
- ' corresponding element in the given array
- If Not IsArray(args) Then
- WScript.Echo getResource("L_INVALID_ERRORMESSAGE_TYPE_AS_INPUT")
- WScript.Quit getResource("EXIT_INVALID_PARAM")
- End If
- If intValuesCount <> UBound(args)+1 Then
- WScript.Echo getResource("L_INVALID_ERRORMESSAGE_ARG_NUMBER_AS_INPUT_ERRORMESSAGE")
- WScript.Quit getResource("EXIT_INVALID_PARAM")
- End If
- For i = 1 to intValuesCount
- strPhrase = Replace(strPhrase, "%" & Cstr(i), (args(i-1) ), 1, 1, VBBinaryCompare)
- Next
- End If
- WScript.Echo(strPhrase)
- End Sub
- ' Function which checks whether a given value matches a particular pattern
- '********************************************************************
- '* Function: matchPattern
- '*
- '* Purpose: To check if the given pattern is existing in the string
- '*
- '* Input:
- '* [in] strMatchPattern the pattern to look out for
- '* [in] strPhrase string in which the pattern needs to be checked
- '*
- '* Output: Returns number of occurrences if pattern present,
- '* Else returns CONST_NO_MATCHES_FOUND
- '*
- '********************************************************************
- Function matchPattern(ByVal strMatchPattern, ByVal strPhrase)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objRegEx ' the regular expression object
- Dim Matches ' the results that match the given pattern
- Dim intResultsCount ' the count of Matches
- intResultsCount = 0 ' initialize the count to 0
- 'create instance of RegExp object
- Set objRegEx = New RegExp
- If (NOT IsObject(objRegEx)) Then
- WScript.Echo (getResource("L_ERROR_CHECK_VBSCRIPT_VERSION_ERRORMESSAGE"))
- End If
- 'find all matches
- objRegEx.Global = True
- 'set case insensitive
- objRegEx.IgnoreCase = True
- 'set the pattern
- objRegEx.Pattern = strMatchPattern
- Set Matches = objRegEx.Execute(strPhrase)
- intResultsCount = Matches.Count
- 'test for match
- If intResultsCount > 0 Then
- matchPattern = intResultsCount
- Else
- matchPattern = getResource("CONST_NO_MATCHES_FOUND")
- End If
- End Function
- ' Function used to get the current Host name
- '********************************************************************
- '* Function: getHostName
- '*
- '* Purpose: To get the Host Name
- '*
- '* Input: objService ' the service object
- '*
- '* Output: Returns the Host Name
- '*
- '********************************************************************
- Function getHostName ( ByVal ObjService)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objSystemSet ' to store the InstancesOf Class
- Dim System ' to refer to the instances objSystemSet
- Set objSystemSet = objService.InstancesOf(getResource("OBJ_SYSTEMINFO_CLASS"))
- If Err.Number Then
- getHostName = getResource("TEXT_NA")
- Err.clear
- Else
- For each System in objSystemSet
- If IsEmpty(System.Name) Then
- getHostName = getResource("TEXT_NA")
- Else
- getHostName = System.Name
- End If
- Exit for
- Next
- End If
- End Function
- ' Function used to get the current User Name
- '********************************************************************
- '* Function: getUserName
- '*
- '* Purpose: To get the User Name
- '*
- '* Input: objService ' the service object
- '*
- '* Output: Returns the User Name
- '*
- '********************************************************************
- Function getUserName ( ByVal ObjService)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objSystemSet ' to store the InstancesOf Class
- Dim System ' to refer to the instances objSystemSet
- Set objSystemSet = objService.InstancesOf(getResource("OBJ_SYSTEMINFO_CLASS"))
- If Err.Number Then
- getUserName = getResource("TEXT_NA")
- Err.clear
- Else
- For each System in objSystemSet
- If IsEmpty(System.UserName) Then
- getUserName = getResource("TEXT_NA")
- Else
- getUserName = System.UserName
- End If
- Exit for
- Next
- End If
- End Function
- ' Function used to get the current Domain name
- '********************************************************************
- '* Function: getDomainName
- '*
- '* Purpose: To get the Domain Name
- '*
- '* Input: objService ' the service object
- '*
- '* Output: Returns the Domain Name
- '*
- '********************************************************************
- Function getDomainName( ByVal ObjService)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objSystemSet ' to store the InstancesOf Class
- Dim System ' to refer to the instances objSystemSet
- Set objSystemSet = objService.InstancesOf(getResource("OBJ_SYSTEMINFO_CLASS"))
- If Err.Number Then
- getDomainName = getResource("TEXT_NA")
- Err.clear
- Else
- For each System in objSystemSet
- If IsEmpty(System.Domain) Then
- getDomainName = getResource("TEXT_NA")
- Else
- getDomainName = System.Domain
- End If
- Exit for
- Next
- End If
- End Function
- ' Function used to get the password from the user
- '**********************************************************************
- '* Function: getPassword
- '*
- '* Purpose: To get password from the user
- '*
- '* Input: None
- '*
- '* Output: Returns the Password specified by the user
- '*
- '**********************************************************************
- Function getPassword()
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objPassword ' the object to store password.dll
- WScript.Echo getResource("L_ENTER_PASSWORD_TEXT")
- Set objPassword = CreateObject(getResource("OBJ_SCRIPT_PASSWORD"))
- If NOT IsObject(objPassword) Then
- ' error in getting the password
- WScript.Echo("") 'blank line
- WScript.Echo(getResource("L_HINT_CHECK_PASSWORD_DLL_MESSAGE"))
- WScript.Quit(getResource("EXIT_UNEXPECTED"))
- End If
- getPassword = objPassword.GetPassword
- WScript.Echo getResource("L_PROCESSING_TEXT")
- End Function
- ' Function used to trap error
- '**********************************************************************
- '* Function: trapError
- '*
- '* Purpose: Reports error with a string saying what the error occurred in.
- '*
- '* Input:
- '* [in] strIn string saying what the error occurred in.
- '*
- '* Output: displayed on screen
- '*
- '**********************************************************************
- Function trapError (ByVal strIn)
- ON ERROR RESUME NEXT
- If Err.Number Then
- Wscript.Echo( "Error (0x" & CStr(Hex(Err.Number)) & "): " & strIn)
- If Err.Description <> "" Then
- Wscript.Echo( "Error description: " & Err.Description)
- End If
- Err.Clear
- trapError = TRUE
- Else
- trapError = FALSE
- End If
- End Function
- ' Function used to get the arguments into appropriate variables
- '**********************************************************************
- '* Function: getArguments
- '*
- '* Purpose: Gets the arguments specified into appropriate variables
- '*
- '* Input:
- '* [in] StrVarName stores the parameter
- '* [in] strVar stores the parameter value
- '* [in] intArgIter counts the no.of arguments
- '* [in] blnAllowNegativeValues checks if negative parameter values are valid
- '*
- '* Output: Returns TRUE or FALSE
- '*
- '**********************************************************************
- ' Function used to get the arguments into appropriate variables
- Function getArguments ( ByVal StrVarName, _
- ByRef strVar, _
- ByRef intArgIter, _
- ByVal blnAllowNegativeValues )
- ON ERROR RESUME NEXT
- Err.Clear
- 'initialized to failure, changed to True upon successful completion
- getArguments = False
- intArgIter = intArgIter + 1
- If intArgIter > (Wscript.Arguments.Count - 1) Then
- vbPrintf getResource("L_INVALID_SYNTAX_ERRORMESSAGE"), Array(Wscript.Arguments.Item(intArgIter-1))
- Exit Function
- End If
- strVar = Wscript.Arguments.Item(intArgIter)
- If Err.Number Then
- vbPrintf getResource("L_INVALID_ERRORMESSAGE"), Array(StrVarName)
- Call Wscript.Echo ( getResource("HINT_CHECK_INPUT") )
- Err.Clear
- Exit Function
- End If
- ' check for the input of those accept negitive numeric values also.
- If blnAllowNegativeValues =True Then
- ' the input can be a negative number
- If matchPattern(getResource("PATTERN_NEGATIVE_NUMBER"), strVar) = getResource("CONST_NO_MATCHES_FOUND") Then
- vbPrintf getResource("L_INVALID_ERRORMESSAGE"), Array(StrVarName)
- Wscript.Echo ( getResource("HINT_CHECK_INPUT") )
- Exit Function
- End If
- End If
- getArguments = True 'success
- End Function
- ' Function used to connect to wmi provider with the given credentials
- '**************************************************************************
- '* Function: wmiConnect
- '*
- '* Purpose: Connects to machine strServer.
- '*
- '* Input:
- '* [in] strServer a machine name
- '* [in] strNameSpace a namespace
- '* [in] strUserName name of the current user
- '* [in] strPassword password of the current user
- '* [in/out] blnLocalConnection a flag for localConnection
- '* [out] objService a service object
- '*
- '* Output: objService is returned as a service object.
- '*
- '**************************************************************************
- Function wmiConnect( ByVal strNameSpace, _
- ByVal strUserName, _
- ByVal strPassword, _
- ByVal strServer, _
- ByRef blnLocalConnection, _
- ByRef objService )
- ON ERROR RESUME NEXT
- Err.Clear
- Dim objLocator ' the locator object
- wmiConnect = True ' There is no error.
- 'Create Locator object to connect to remote CIM object manager
- Set objLocator = CreateObject(getResource("OBJ_SCRIPTING_LOCATOR"))
- If Err.Number Then
- wmiConnect = False ' 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)
- If Err.Number <> 0 Then
- If Err.Number = Clng(getResource("CONST_LOCAL_CREDENTIALS_SUPPLIED")) Then
- If Not blnLocalConnection =True then
- ' -2147217308 number to catch local credentails supplied by WMI
- Wscript.echo getResource("L_WARRING_LOCAL_CREDENTIALS_SUPPLIED_MESSAGE")
- 'setting the flag that target is local system to eleminate error message next time
- blnLocalConnection = True
- End If
- Err.Clear ' clear the error number for local connection
- ' Calling the Locator object to connect to local system
- Set objService = objLocator.ConnectServer(strServer, strNameSpace, "" , "" )
- If Err.Number <> 0 Then wmiConnect = False ' An error occurred
- Else
- wmiConnect = False ' An error occurred
- End If
- End If
- ObjService.Security_.impersonationlevel = 3
- End Function
- ' Function used to pack the string to the given width
- '**************************************************************************
- '* Function: strPackString
- '*
- '* Purpose: Attaches spaces to a string to increase the length to intWidth.
- '*
- '* Input:
- '* [in] strString a string
- '* [in] intWidth the intended length of the string
- '*
- '* Output: strPackString is returned as the packed (padded/truncated) string.
- '*
- '**************************************************************************
- Function packString( ByVal strString, ByVal intWidth)
- ON ERROR RESUME NEXT
- Err.Clear
- strString = CStr(strString)
- If Err.Number Then
- Call Wscript.Echo (getResource("L_INVALID_ERRORMESSAGE_TYPE_AS_INPUT"))
- Err.Clear
- Wscript.Quit(getResource("EXIT_INVALID_PARAM"))
- End If
- intWidth = CInt(intWidth)
- If Err.Number Then
- Call Wscript.Echo (getResource("L_INVALID_ERRORMESSAGE_TYPE_AS_INPUT"))
- Err.Clear
- Wscript.Quit(getResource("EXIT_INVALID_PARAM"))
- End If
- If IsNull(strString) OR IsEmpty(strString) OR Len(strString) = 0 Then
- packString = getResource("TEXT_NA") & Space(intWidth-3)
- Exit Function
- End If
- If intWidth >= LengthinBytes(strString) Then
- packString = strString & Space(intWidth-LengthinBytes(strString))
- Else
- ' truncate the string
- packString = Left(strString, intWidth)
- End If
- End Function
- ' Function used to get length of the maximum length string in an array of strings
- '**************************************************************************
- '* Function: getMaxStringLength
- '*
- '* Purpose: To get the length of longest string in the given array
- '*
- '* Input: [in] arrStrings an array of strings
- '*
- '* Output: Returns length of longest string in the array
- '* If error in input, displays message and quits
- '*
- '**************************************************************************
- Function getMaxStringLen(ByVal arrStrings)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim intMaxLength ' to store the maximum length of the string
- Dim intArrCount ' used in the loop
- intMaxLength = 0
- ' quit if input is not an array
- If NOT IsArray(arrStrings) Then
- WScript.Echo getResource("L_INVALID_ERRORMESSAGE_TYPE_AS_INPUT")
- WScript.Quit(getResource("EXIT_INVALID_PARAM"))
- End If
- ' check for length of each element in the array
- For intArrCount = 0 To UBound(arrStrings)
- If LengthinBytes(arrStrings(intArrCount)) > intMaxLength Then
- intMaxLength = LengthinBytes(arrStrings(intArrCount))
- End If
- Next
- getMaxStringLen = intMaxLength
- End Function
- ' Function used to get length of actual bytes required by the string.
- '**************************************************************************
- '* Function: LengthinBytes
- '*
- '* Purpose: To get the length of a string in Bytes.
- '*
- '* Input: [in] strString a String
- '*
- '* Output: Returns length of a string in Bytes.
- '*
- '**************************************************************************
- Function LengthinBytes(ByVal strString)
- Dim i, strChar
- LengthinBytes = 0
- For i =1 To Len(strString)
- strChar = Mid(strString, i, 1)
- If Asc(strChar) > 255 OR Asc(strChar) < 0 Then
- LengthinBytes = LengthinBytes + 2
- Else
- LengthinBytes = LengthinBytes + 1
- End If
- Next
- End Function
- ' Function used to show results in the desired format
- '**************************************************************************
- '* Function: showResults
- '*
- '* Purpose: To show results in the desired format
- '*
- '* Input:
- '* [in] arrHeader an array of strings containing all the headers
- '* [in] arrResultsArray array containing all the records
- '* [in] strFormat CSV or LIST or TABLE
- '* [in] blnPrintHeader Boolean value indicating whether header
- '* should be printed or not
- '* [in] arrBlnHide an array containing boolean values. Each value
- '* indicates whether a particular value in a record
- '* is to be displayed or not
- '*
- '* Output: Displays all the records in the required format
- '*
- '**************************************************************************
- Sub showResults( ByVal arrHeader, _
- ByVal arrResultsArray, _
- ByVal arrMaxLength, _
- ByVal strFormat, _
- ByVal blnPrintHeader, _
- ByVal arrBlnHide )
- ON ERROR RESUME NEXT
- Err.Clear
- Dim i, j ' used as loop variables
- Dim intTestResult ' to store temporary results
- Dim intMaxHeaderLength ' to store length of longest column header
- Dim strPackedString ' to store the padded/truncated string
- Dim arrResults ' to store the row to display(which is an array)
- Dim intColumnCount ' to store the count for no.of columns
- ' get the maximum length of all the header names given
- intMaxHeaderLength = getMaxStringLen(arrHeader)
- ' initialize the values
- intColumnCount = UBound(arrHeader)
- intTestResult = 0
- Select Case LCase(strFormat)
- Case LCase(getResource("L_DISPLAY_FMT_LIST_TEXT"))
- ' If LIST format is specified
- For i = 0 to UBound(arrResultsArray)
- arrResults = arrResultsArray(i)
- For j = 0 to UBound(arrResults)
- If arrBlnHide(j) = 0 Then
- intTestResult = arrHeader(j) & ":"
- strPackedString = packString(intTestResult, intMaxHeaderLength+1)
- WScript.Echo strPackedString & " " & arrResults(j)
- End If
- Next
- ' print an empty line
- WScript.Echo ""
- Next
- Case LCase(getResource("L_DISPLAY_FMT_CSV_TEXT"))
- ' If CSV format is specified
- If blnPrintHeader Then
- strPackedString = ""
- ' first print the header , if not already printed
- For i = 0 to UBound(arrHeader)
- If arrBlnHide(i) = 0 Then
- intTestResult = InStr(1,arrHeader(i), ",", VBBinaryCompare)
- If intTestResult > 0 Then
- arrHeader(i) = chr(34) & arrHeader(i) & chr(34)
- Else
- arrHeader(i) = chr(34) & arrHeader(i) & chr(34)
- End If
- strPackedString = strPackedString & arrHeader(i)
- If (i+1) <= intColumnCount Then
- strPackedString = strPackedString & ","
- End If
- End If
- Next
- WScript.Echo strPackedString
- End If
- ' print all the comma separated values
- For i = 0 to UBound(arrResultsArray)
- arrResults = arrResultsArray(i)
- strPackedString = ""
- For j = 0 to UBound(arrResults)
- If arrBlnHide(j) = 0 Then
- intTestResult = InStr(1,arrResults(j), ",", VBBinaryCompare)
- If intTestResult > 0 Then
- strPackedString = strPackedString & chr(34) & arrResults(j) & chr(34)
- Else
- strPackedString = strPackedString & chr(34) & arrResults(j) & chr(34)
- End If
- If (j+1) <= intColumnCount Then
- strPackedString = strPackedString & ","
- ' strPackedString = strPackedString & chr(34) & "," & chr(34)
- End If
- End If
- Next
- WScript.Echo strPackedString
- strPackedString = ""
- Next
- Case LCase(getResource("L_DISPLAY_FMT_TABLE_TEXT"))
- ' If table format is asked for
- If blnPrintHeader Then
- strPackedString = ""
- ' print the header, if not already printed
- For i = 0 to UBound(arrHeader)
- If arrBlnHide(i) = 0 Then
- strPackedString = strPackedString & " " & _
- packString(arrHeader(i), _
- arrMaxLength(i))
- End If
- Next
- WScript.Echo strPackedString
- strPackedString = ""
- ' print the Underline to the column header
- For i = 0 to UBound(arrHeader)
- If arrBlnHide(i) = 0 Then
- strPackedString = strPackedString & " " & _
- packString(String(arrMaxLength(i),"-"), arrMaxLength(i))
- End If
- Next
- WScript.Echo strPackedString
- End If
- For i = 0 to UBound(arrResultsArray)
- arrResults = arrResultsArray(i)
- strPackedString = ""
- For j = 0 to UBound(arrResults)
- If arrBlnHide(j) = 0 Then
- strPackedString = strPackedString & " " & _
- packString(arrResults(j), _
- arrMaxLength(j))
- End If
- Next
- WScript.Echo strPackedString
- Next
- End Select
- End Sub
- '********************************************************************
- '* Function: strDateTime
- '*
- '* Purpose: To validate the date-time format specified
- '*
- '* Input:
- '* [in] strDateTime the date-time string
- '*
- '* Output: Returns true if valid format
- '* Else displays error message and quits
- '*
- '********************************************************************
- Function validateDateTime(ByVal strDateTime)
- ON ERROR RESUME NEXT
- Err.Clear
- validateDateTime = False
- Dim arrDateTimeCheck ' to store the date and time values
- Dim intMonth ' to store the month(instead of array(subscript))
- Dim intDay ' to store the day(instead of array(subscript))
- Dim intYear ' to store the year(instead of array(subscript))
- Dim strTemp ' to store temporary values
- Dim arrTemp ' to store temporary values when split is used
- Dim intHour ' to store the Hour(instead of array(subscript))
- Dim intMinute ' to store the Minutes(instead of array(subscript))
- Dim intSecond ' to store the Seconds(instead of array(subscript))
- ' strDateTime is of the format "mm/dd/yy|yyyy,hh:mm:ssPM"
- ' first split at the comma and separate date and time
- arrDateTimeCheck = split(strDateTime, ",",2,VBBinaryCompare)
- ' split the date and check if the month and day are in bounds
- arrTemp = split(arrDateTimeCheck(0), "/",3,VBBinaryCompare)
- intMonth = arrTemp(0)
- intDay = arrTemp(1)
- intYear = arrTemp(2)
- If ((CInt(intMonth) < 1) OR (CInt(intMonth) > 12) OR (CInt(intDay) < 1) OR (CInt(intDay) > 31)) Then
- vbPrintf getResource("L_INVALID_ERRORMESSAGE_DATE_ERRORMESSAGE"), Array(arrDateTimeCheck(0), strDateTime)
- WScript.quit(getResource("EXIT_INVALID_INPUT"))
- Exit Function
- End If
- If CInt(year(arrDateTimeCheck(0))) => 9999 OR CInt(year(arrDateTimeCheck(0))) < 1601 then
- vbPrintf getResource("L_INVALID_ERRORMESSAGE_DATE_ERRORMESSAGE"), Array(arrDateTimeCheck(0), strDateTime)
- WScript.quit(getResource("EXIT_INVALID_INPUT"))
- Exit Function
- End If
- ' split the time to hour, minute and second. Check for bounds
- arrTemp = split(arrDateTimeCheck(1), ":",3,VBBinaryCompare)
- intHour = arrTemp(0)
- intMinute = arrTemp(1)
- intSecond = Left(arrTemp(2), (Len(arrTemp(2))-2)) ' remove the am or pm
- If ((CInt(intHour) < 1) OR (CInt(intHour) > 12) OR _
- (CInt(intMinute) < 0) OR (CInt(intMinute) > 59) OR _
- (CInt(intSecond) < 0) OR (CInt(intSecond) > 59)) Then
- vbPrintf getResource("L_INVALID_ERRORMESSAGE_TIME_ERRORMESSAGE"), Array(arrDateTimeCheck(1),strDateTime)
- WScript.Quit(getResource("EXIT_INVALID_INPUT"))
- Exit Function
- End If
- ' check if the given date an time are valid
- If IsDate(arrDateTimeCheck(0)) Then
- strTemp = TimeValue(arrDateTimeCheck(1))
- If Err.Number Then
- Err.Clear
- vbPrintf getResource("L_INVALID_ERRORMESSAGE_TIME_ERRORMESSAGE"), Array(arrDateTimeCheck(1),strDateTime)
- WScript.Quit(getResource("EXIT_INVALID_INPUT"))
- Exit Function
- Else
- validateDateTime = TRUE
- End If
- Else
- vbPrintf getResource("L_INVALID_ERRORMESSAGE_DATE_ERRORMESSAGE"), Array(arrDateTimeCheck(0), strDateTime)
- WScript.Quit(getResource("EXIT_INVALID_INPUT"))
- Exit Function
- End If
- End Function
- '********************************************************************
- '* Function: changeToWMIDateTime
- '*
- '* Purpose: To format the given date-time
- '*
- '* Input:
- '* [in] strDateTime the date-time string
- '* [in] strTimeZone the TimeZone of the Queried system
- '*
- '* Output: Returns the formatted date-time string
- '*
- '********************************************************************
- Function changeToWMIDateTime(ByVal strDateTime,strTimeZone)
- ON ERROR RESUME NEXT
- Err.Clear
- Dim arrDateTimeCheck ' to store the date-time values
- Dim strDate ' to store temporary date value
- Dim arrDate ' array to store date values(MMDDYYYY)
- Dim strMonth ' to store Month value
- Dim strYear ' to store Year value
- Dim strDay ' to store Day value
- Dim strTime ' to store temporary date value
- Dim arrTime ' array to store date values(MMDDYYYY)
- Dim i ' for looping
- ' input strDateTime is like "mm/dd/yy|yyyy,hh:mm:ssAM|PM"
- ' input Timezone is like "'+|-' UUU"
- arrDateTimeCheck = split(strDateTime,",")
- ' Finally format the input like "YYYYMMDDHHMMSS.000000+TIMEZONE"
- ' first format the month and day. Append the four digit year
- strDate = Left(arrDateTimeCheck(0),InStrRev(arrDateTimeCheck(0), "/")) & Year(arrDateTimeCheck(0))
- 'now date is mm/dd/yyyy
- arrDateTimeCheck(0) = strDate
- 'Spliting the array for month,day,year
- arrDate = split(arrDateTimeCheck(0) , "/" )
- ' The date, month must be of 2 digits
- ' If they are of single digit length < 2, append a "0"
- For i=0 to ubound(arrDate) - 1
- If Len(arrDate(i)) < 2 then
- arrDate(i) = "0" & arrdate(i)
- End If
- Next
- strMonth = arrDate(0)
- strDay = arrDate(1)
- strYear = arrDate(2)
- 'for 'YYYYMMDD' Pattern
- strDate = strYear & strMonth & strDay
- ' Take the Time for formating
- strTime = arrDateTimeCheck(1)
- 'NOW arrDateTimeCheck(1)="HH:MM:SSAM|PM".
- 'here formating Time 24Hours independent of Locale separator
- 'Spliting the array for HH MM SS
- arrTime = split(strTime , ":" )
- 'Looking for [A|P]M string
- If Instr(1,Lcase(arrTime(2)),Lcase("AM"),VBBinaryCompare) > 0 Then
- 'AM Conversion for 24H
- If arrTime(0) >= 12 Then
- arrTime(0) = arrTime(0) - 12
- End If
- Else
- 'PM Conversion for 24H
- If arrTime(0) < 12 Then
- arrTime(0) =arrTime(0) + 12
- End If
- End If
- 'Adding leading zero if third element is S[A|P]M
- If Len( arrTime(2)) = 3 then arrTime(2) = "0" & arrTime(2)
- 'Removing AM|PM from third element in the array
- arrTime(2) =Mid(arrTime(2),1,2)
- ' The hours, mins and secs must be of 2 digits
- ' If they are of single digit i.e Len < 2 , append a "0"
- For i=0 to ubound(arrTime)
- If Len(arrTime(i)) < 2 then
- arrTime(i) = "0" & arrTime(i)
- End If
- Next
- strTime = Join( arrTime ,"") ' formatting as HHMMSS
- ' Return the total format as "YYYYMMDDHHMMSS.000000+TIMEZONE"
- ChangeToWMIDateTime = strDate & strTime & ".000000" & strTimeZone
- End Function
- ]]>
- </script>
- </component>
- </package>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement