'********************************************************************* ' ' sysprop.vbs ' ' Purpose: test system property functionality ' ' Parameters: none ' ' Returns: 0 - success ' 1 - failure ' '********************************************************************* on error resume next set scriptHelper = CreateObject("WMIScriptHelper.WSC") scriptHelper.logFile = "c:\temp\sysprop.txt" scriptHelper.loggingLevel = 3 scriptHelper.testName = "SYSPROP" scriptHelper.testStart '***************************** ' Get a disk '***************************** set disk = GetObject ("winmgmts:root\cimv2:Win32_LogicalDisk='C:'") if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get test instance" else scriptHelper.writeToLog "Test instance retrieved correctly", 2 end if '***************************** ' Get the __CLASS property '***************************** className = disk.SystemProperties_("__CLASS") if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get __CLASS" elseif "Win32_LogicalDisk" <> className then scriptHelper.writeErrorToLog null, "__CLASS value is incorrect" else scriptHelper.writeToLog "__CLASS retrieved correctly", 2 end if '***************************** ' Try to add a property - should fail '***************************** disk.SystemProperties_.Add "__FRED", 8 if err <> 0 then scriptHelper.writeToLog "Expected failure to add a system property", 2 err.clear else scriptHelper.writeErrorToLog null, "Unexpectedly successful addition of system property" end if '***************************** ' Iterate through the system properties '***************************** EnumerateProperties disk '***************************** ' Count the system properties '***************************** spCount = disk.SystemProperties_.Count if err <> 0 then scriptHelper.writeErrorToLog err, "Error retrieving Count" else scriptHelper.writeToLog "There are " & spCount & " system properties", 2 end if '***************************** ' Get an empty class '***************************** set emptyClass = GetObject("winmgmts:root\default").Get if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to get empty test class" else scriptHelper.writeToLog "Empty test class retrieved correctly", 2 end if '***************************** ' Set the __CLASS property '***************************** emptyClass.SystemProperties_("__CLASS").Value = "Stavisky" if err <> 0 then scriptHelper.writeErrorToLog err, "Failed to set __CLASS in empty class" else scriptHelper.writeToLog "__CLASS set in empty class correctly", 2 end if if emptyClass.Path_.Class <> "Stavisky" then scriptHelper.writeErrorToLog null, "Incorrect class name set in path" else scriptHelper.writeToLog "Class name set in path correctly", 2 end if scriptHelper.testComplete if scriptHelper.statusOK then WScript.Echo "PASS" WScript.Quit 0 else WScript.Echo "FAIL" WScript.Quit 1 end if Sub EnumerateProperties (obj) scriptHelper.writeToLog "Enumerating all properties...", 2 for each property in obj.SystemProperties_ scriptHelper.writeToLog " " & property.Name & " - " & property.CIMType, 2 value = property.Value if IsNull(value) then scriptHelper.writeToLog " Value: ", 2 elseif property.IsArray then valueStr = "[" for i = LBound(value) to UBound(value) valueStr = valueStr + value(i) if i < UBound(value) then valueStr = valueStr + ", " next valueStr = valueStr + "]" scriptHelper.writeToLog " Value: " & valueStr, 2 else scriptHelper.writeToLog " Value: " & property.Value, 2 end if if err <> 0 then scriptHelper.writeErrorToLog err, "Hmm" next if err <> 0 then scriptHelper.writeErrorToLog err, "...Failed to enumerate" else scriptHelper.writeToLog "...Enumeration complete", 2 end if End Sub