<!-- ****************************************************************** ' ' deletevalues.wsf ' ' Purpose: test SWbemPropertyEx::DeleteValues ' ' Parameters: none ' ' Returns: 0 - success ' 1 - failure ' '***************************************************************** --> <job id="WMI DeleteValues Test"> <reference object="WbemScripting.SWbemLocator" version="1.2"/> <script language="VBScript"> on error resume next set scriptHelper = CreateObject("WMIScriptHelper.WSC") scriptHelper.logFile = "c:\temp\deletevalues.txt" scriptHelper.loggingLevel = 3 scriptHelper.testName = "WMI DeleteValues" scriptHelper.testStart dim ns dim newClass dim sysClass, disk, process ' Get some useful classes for embedded objects set sysClass = GetObject("winmgmts:__SystemClass") set disk = GetObject("winmgmts:Win32_logicaldisk") set process = GetObject("winmgmts:Win32_process") if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get utility classes" else scriptHelper.writeToLog "Successful retrieval of utility classes", 2 end if ' Connect to the namespace set ns = GetObject("winmgmts:root\default") if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to connect to root\default" else scriptHelper.writeToLog "Successful connection to root\default", 2 end if 'Make a new class set newClass = ns.Get if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get empty class" else scriptHelper.writeToLog "Successful retrieval of empty class", 2 end if newClass.Path_.Class = "DELETEVALUES000TEST" ' Add a non-array property (uint32) set p0 = newClass.Properties_.Add ("p0", 19) p0 = 251 ' Add some array properties, one for each type set p = newClass.Properties_.Add ("pSint8", wbemCimtypeSint8, true) p.Value = Array (-1, 0, 3, 1, 2, 3) set p = newClass.Properties_.Add ("pUint8", wbemCimtypeUint8, true) p.Value = Array (0, 1, 123, 222, 1, 0, 1) set p = newClass.Properties_.Add ("pSint16", wbemCimtypeSint16, true) p.Value = Array (-1, 0, 1, 3, -4) set p = newClass.Properties_.Add ("pUint16", wbemCimtypeUint16, true) p.Value = Array (0, 1, 65535, 23) set p = newClass.Properties_.Add ("pSint32", wbemCimtypeSint32, true) p.Value = Array (-1, 0, 1, 2, 89) set p = newClass.Properties_.Add ("pUint32", wbemCimtypeUint32, true) p.Value = Array (0, 1, 65535, 26) set p = newClass.Properties_.Add ("pSint64", wbemCimtypeSint64, true) p.Value = Array ("-1", "0", "1", "2", "11") set p = newClass.Properties_.Add ("pUint64", wbemCimtypeUint64, true) p.Value = Array ("0", "1", "65535", "123", "65535") set p = newClass.Properties_.Add ("pReal32", wbemCimtypeReal32, true) p.Value = Array (1.2, -123.456, 23.004, 34.44) set p = newClass.Properties_.Add ("pReal64", wbemCimtypeReal64, true) p.Value = Array (1.2, -123.456, 23.004, 332.1) set p = newClass.Properties_.Add ("pBoolean", wbemCimtypeBoolean, true) p.Value = Array (true, false, true, true) set p = newClass.Properties_.Add ("pString", wbemCimtypeString, true) p.Value = Array ("I", "have", "but", "an", "hour", "Obey", "the", "time") set p = newClass.Properties_.Add ("pDatetime", wbemCimtypeDatetime, true) p.Value = Array ("20000120195632.000000-480", _ "20000120195632.000000+480", "20000120195632.000000-480", "20000120195632.000000-480") set p = newClass.Properties_.Add ("pReference", wbemCimtypeReference, true) p.Value = Array ("root\cimv2:win32_logicaldisk", _ "root\default:__cimomidentification=@", "root\default:__cimomidentification=@", _ "root\cimv2:win32_logicaldisk") set p = newClass.Properties_.Add ("pChar16", wbemCimtypeChar16, true) p.Value = Array (34, 35, 36, 37) set p = newClass.Properties_.Add ("pObject", wbemCimtypeObject, true) p.Value = Array (sysClass, disk, process, disk) if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to define class" else scriptHelper.writeToLog "Successful definition of class", 2 end if ' Save the class newClass.Put_ if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to save class" else scriptHelper.writeToLog "Successful save of class", 2 end if ' Get it back set newClass = ns.Get ("DELETEVALUES000TEST") if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get class" else scriptHelper.writeToLog "Successful get of class", 2 end if ' now test each property type TestUint8 TestSint8 TestUint16 TestSint16 TestUint32 TestSint32 TestUint64 TestSint64 TestReal32 TestReal64 TestBoolean TestString TestDatetime TestReference TestChar16 TestObject ' Save the class newClass.Put_ if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to save class" else scriptHelper.writeToLog "Successful save of class", 2 end if ' Clean up newClass.Delete_ if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to delete class" else scriptHelper.writeToLog "Successful delete of class", 2 end if scriptHelper.testComplete if scriptHelper.statusOK then WScript.Echo "PASS" WScript.Quit 0 else WScript.Echo "FAIL" WScript.Quit 1 end if '**************************************************************** '* '* TestUint8 '* ========= '* '* Test AddValues for uint8 arrays '* '**************************************************************** Sub TestUint8 on error resume next ' Try a delete of first match set pUint8 = newClass.Properties_("pUint8") pUint8.DeleteValues 123 scriptHelper.DisplayValue newClass, "pUint8" scriptHelper.VerifyValue pUint8.Value, Array (0, 1, 222, 1, 0, 1) ' Try a delete of all matches pUint8.DeleteValues Array (0, 1), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pUint8" scriptHelper.VerifyValue pUint8.Value, Array (222) ' Try a delete of all pUint8.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pUint8" scriptHelper.VerifyValue pUint8.Value, Array () End Sub '**************************************************************** '* '* TestSint8 '* ========= '* '* Test AddValues for sint8 arrays '* '**************************************************************** Sub TestSint8 on error resume next ' Try a delete of first match set pSint8 = newClass.Properties_("pSint8") pSint8.DeleteValues Array (0, 22, 3) scriptHelper.DisplayValue newClass, "pSint8" scriptHelper.VerifyValue pSint8.Value, Array (-1, 3, 1, 2, 3) ' Try a delete of all matches within a range pSint8.DeleteValues Array (3, 1), wbemDeleteValuesDeleteAllMatches, 1, 2 scriptHelper.DisplayValue newClass, "pSint8" scriptHelper.VerifyValue pSint8.Value, Array (-1, 2, 3) ' Try a delete of all pSint8.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pSint8" scriptHelper.VerifyValue pSint8.Value, Array () End Sub '**************************************************************** '* '* TestString '* ============ '* '* Test AddValues for string arrays '* '**************************************************************** Sub TestString on error resume next ' Try a delete of first match set pString = newClass.Properties_("pString") pString.DeleteValues "Obey", wbemDeleteValuesDeleteFirstMatch, 5, -1 scriptHelper.DisplayValue newClass, "pString" scriptHelper.VerifyValue pString.Value, Array ("I", "have", "but", "an", "hour", "the", "time") ' Try a delete of all matches within a range pString.DeleteValues Array ("I", "You", "Me", "the"), wbemDeleteValuesDeleteAllMatches, 0, 5 scriptHelper.DisplayValue newClass, "pString" scriptHelper.VerifyValue pString.Value, Array ("have", "but", "an", "hour", "time") ' Try a delete of all pString.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pString" scriptHelper.VerifyValue pString.Value, Array () End Sub '**************************************************************** '* '* TestUint16 '* ========== '* '* Test AddValues for uint16 arrays '* '**************************************************************** Sub TestUint16 on error resume next ' Try a delete of first match set pUint16 = newClass.Properties_("pUint16") pUint16.DeleteValues Array (2, 3, 4, 54, 23), wbemDeleteValuesDeleteFirstMatch, 0, -1 scriptHelper.DisplayValue newClass, "pUint16" scriptHelper.VerifyValue pUint16.Value, Array (0, 1, 65535) ' Try a delete of all matches within a range pUint16.DeleteValues Array (0, 65535), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pUint16" scriptHelper.VerifyValue pUint16.Value, Array (1) ' Try a delete of all pUint16.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pUint16" scriptHelper.VerifyValue pUint16.Value, Array () End Sub '**************************************************************** '* '* TestSint16 '* ========== '* '* Test AddValues for sint16 arrays '* '**************************************************************** Sub TestSint16 on error resume next ' Try a delete of first match set pSint16 = newClass.Properties_("pSint16") pSint16.DeleteValues -1, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pSint16" scriptHelper.VerifyValue pSint16.Value, Array (0, 1, 3, -4) ' Try a delete of all matches within a range pSint16.DeleteValues Array (0, 65535, -4), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pSint16" scriptHelper.VerifyValue pSint16.Value, Array (1, 3) ' Try a delete of all pSint16.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pSint16" scriptHelper.VerifyValue pSint16.Value, Array () End Sub '**************************************************************** '* '* TestUint32 '* ========== '* '* Test AddValues for uint32 arrays '* '**************************************************************** Sub TestUint32 on error resume next ' Try a delete of first match set pUint32 = newClass.Properties_("pUint32") pUint32.DeleteValues 1, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pUint32" scriptHelper.VerifyValue pUint32.Value, Array (0, 65535, 26) ' Try a delete of all matches within a range pUint32.DeleteValues Array (0, 65535, -4), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pUint32" scriptHelper.VerifyValue pUint32.Value, Array (26) ' Try a delete of all pUint32.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pUint32" scriptHelper.VerifyValue pUint32.Value, Array () End Sub '**************************************************************** '* '* TestSint32 '* ========== '* '* Test AddValues for sint32 arrays '* '**************************************************************** Sub TestSint32 on error resume next ' Try a delete of first match set pSint32 = newClass.Properties_("pSint32") pSint32.DeleteValues 11, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pSint32" scriptHelper.VerifyValue pSint32.Value, Array (-1, 0, 1, 2, 89) ' Try a delete of all matches within a range pSint32.DeleteValues Array (0, 65535, -4, 2, 89), wbemDeleteValuesDeleteAllMatches, 0, 2 scriptHelper.DisplayValue newClass, "pSint32" scriptHelper.VerifyValue pSint32.Value, Array (-1, 1, 2, 89) ' Try a delete of all pSint32.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pSint32" scriptHelper.VerifyValue pSint32.Value, Array () End Sub '**************************************************************** '* '* TestUint64 '* ========== '* '* Test AddValues for uint64 arrays '* '**************************************************************** Sub TestUint64 on error resume next ' Try a delete of first match set pUint64 = newClass.Properties_("pUint64") pUint64.DeleteValues "1", wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pUint64" scriptHelper.VerifyValue pUint64.Value, Array ("0", "65535", "123", "65535") ' Try a delete of all matches within a range pUint64.DeleteValues Array ("65535"), wbemDeleteValuesDeleteAllMatches, 0, 2 scriptHelper.DisplayValue newClass, "pUint64" scriptHelper.VerifyValue pUint64.Value, Array ("0", "123", "65535") ' Try a delete of all pUint64.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pUint64" scriptHelper.VerifyValue pUint64.Value, Array () End Sub '**************************************************************** '* '* TestSint64 '* ========== '* '* Test AddValues for sint64 arrays '* '**************************************************************** Sub TestSint64 on error resume next ' Try a delete of first match set pSint64 = newClass.Properties_("pSint64") pSint64.DeleteValues "21", wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pSint64" scriptHelper.VerifyValue pSint64.Value, Array ("-1", "0", "1", "2", "11") ' Try a delete of all matches within a range pSint64.DeleteValues Array ("-1", "11"), wbemDeleteValuesDeleteAllMatches, 0, 2 scriptHelper.DisplayValue newClass, "pSint64" scriptHelper.VerifyValue pSint64.Value, Array ("0", "1", "2", "11") ' Try a delete of all pSint64.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pSint64" scriptHelper.VerifyValue pSint64.Value, Array () End Sub '**************************************************************** '* '* TestReal32 '* ========== '* '* Test AddValues for real32 arrays '* '**************************************************************** Sub TestReal32 on error resume next ' NB - note the use of CSng to force constants to be of type ' VT_R4. If we don't do this the supplied constant is of ' type VT_R8 (default for VB and VBScript). This internally ' causes floating point rounding errors when comparing against ' VT_R4's since VT_R4 to VT_R8 conversion is not "pad with 0's". ' Try a delete of first match set pReal32 = newClass.Properties_("pReal32") pReal32.DeleteValues CSng(1.2), wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pReal32" scriptHelper.VerifyValue pReal32.Value, Array (-123.456, 23.004, 34.44) ' Try a delete of all matches within a range pReal32.DeleteValues Array (CSng(0), CSng(65535), CSng(34.44)), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pReal32" scriptHelper.VerifyValue pReal32.Value, Array (-123.456, 23.004) ' Try a delete of all pReal32.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pReal32" scriptHelper.VerifyValue pReal32.Value, Array () End Sub '**************************************************************** '* '* TestReal64 '* ========== '* '* Test AddValues for real64 arrays '* '**************************************************************** Sub TestReal64 on error resume next ' Try a delete of first match set pReal64 = newClass.Properties_("pReal64") pReal64.DeleteValues 332.1, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pReal64" scriptHelper.VerifyValue pReal64.Value, Array (1.2, -123.456, 23.004) ' Try a delete of first match pReal64.DeleteValues 32.1, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pReal64" scriptHelper.VerifyValue pReal64.Value, Array (1.2, -123.456, 23.004) ' Try a delete of all matches within a range pReal64.DeleteValues Array (23.004, -123.456), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pReal64" scriptHelper.VerifyValue pReal64.Value, Array (1.2) ' Try a delete of all matches within a range pReal64.DeleteValues Array (23.004, -123.456), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pReal64" scriptHelper.VerifyValue pReal64.Value, Array (1.2) ' Try a delete of all pReal64.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pReal64" scriptHelper.VerifyValue pReal64.Value, Array () End Sub '**************************************************************** '* '* TestBoolean '* =========== '* '* Test AddValues for boolean arrays '* '**************************************************************** Sub TestBoolean on error resume next ' Try a delete of first match set pBoolean = newClass.Properties_("pBoolean") pBoolean.DeleteValues true, wbemDeleteValuesDeleteFirstMatch, 1 scriptHelper.DisplayValue newClass, "pBoolean" scriptHelper.VerifyValue pBoolean.Value, Array (true, false, true) ' Try a delete of all matches within a range pBoolean.DeleteValues Array (true, true), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pBoolean" scriptHelper.VerifyValue pBoolean.Value, Array (false) ' Try a delete of all pBoolean.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pBoolean" scriptHelper.VerifyValue pBoolean.Value, Array () End Sub '**************************************************************** '* '* TestDatetime '* ============ '* '* Test AddValues for datetime arrays '* '**************************************************************** Sub TestDatetime on error resume next ' Try a delete of first match set pDatetime = newClass.Properties_("pDatetime") pDatetime.DeleteValues "20000120195632.000000-480", wbemDeleteValuesDeleteFirstMatch, 1 scriptHelper.DisplayValue newClass, "pDatetime" scriptHelper.VerifyValue pDatetime.Value, Array ("20000120195632.000000-480", _ "20000120195632.000000+480", "20000120195632.000000-480") ' Try a delete of all matches within a range pDatetime.DeleteValues Array ("20000120195632.000000-480", "20000120195632.000000-480"), _ wbemDeleteValuesDeleteAllMatches, , 1 scriptHelper.DisplayValue newClass, "pDatetime" scriptHelper.VerifyValue pDatetime.Value, Array ("20000120195632.000000+480", "20000120195632.000000-480") ' Try a delete of all pDatetime.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pDatetime" scriptHelper.VerifyValue pDatetime.Value, Array () End Sub '**************************************************************** '* '* TestReference '* ============= '* '* Test AddValues for reference arrays '* '**************************************************************** Sub TestReference on error resume next ' Try a delete of first match set pReference = newClass.Properties_("pReference") pReference.DeleteValues Array ("root\cimv2:win32_logicaldisk", _ "root\default:__cimomidentification=@"), wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pReference" scriptHelper.VerifyValue pReference.Value, Array ("root\default:__cimomidentification=@", _ "root\default:__cimomidentification=@", "root\cimv2:win32_logicaldisk") ' Try a delete of all matches within a range pReference.DeleteValues Array ("root\default:__cimomidentification=@", _ "root\default:__cimomidentification=@", "root\cimv2:win32_logicaldisk"), _ wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pReference" scriptHelper.VerifyValue pReference.Value, Array () ' Try a delete of all pReference.Value = null pReference.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pReference" scriptHelper.VerifyValue pReference.Value, null End Sub '**************************************************************** '* '* TestChar16 '* ========== '* '* Test AddValues for char16 arrays '* '**************************************************************** Sub TestChar16 on error resume next ' Try a delete of first match set pChar16 = newClass.Properties_("pChar16") pChar16.DeleteValues 35, wbemDeleteValuesDeleteFirstMatch scriptHelper.DisplayValue newClass, "pChar16" scriptHelper.VerifyValue pChar16.Value, Array (34, 36, 37) ' Try a delete of all matches within a range pChar16.DeleteValues Array (35, 36, 34, 42, 43, 44), wbemDeleteValuesDeleteAllMatches scriptHelper.DisplayValue newClass, "pChar16" scriptHelper.VerifyValue pChar16.Value, Array (37) ' Try a delete of all pChar16.DeleteValues , wbemDeleteValuesDeleteAll scriptHelper.DisplayValue newClass, "pChar16" scriptHelper.VerifyValue pChar16.Value, Array () End Sub '**************************************************************** '* '* TestObject '* ========== '* '* Test AddValues for object arrays '* '**************************************************************** Sub TestObject on error resume next End Sub </script> </job>