You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.8 KiB
144 lines
4.8 KiB
'***************************************************************************
|
|
'This script tests the manipulation of property values, in the case that the
|
|
'property is an embedded type
|
|
'***************************************************************************
|
|
Set Service = GetObject("winmgmts:root/default")
|
|
|
|
On Error Resume Next
|
|
|
|
'*******************************
|
|
'Create an embedded object class
|
|
'*******************************
|
|
|
|
'
|
|
' [woobit(24.5)]
|
|
' class EmObjInner {
|
|
' [key] uint32 pInner = 10;
|
|
' };
|
|
'
|
|
|
|
Set EmbObjInner = Service.Get()
|
|
EmbObjInner.Path_.Class = "EmbObjInner"
|
|
EmbObjInner.Qualifiers_.Add "woobit", 24.5
|
|
Set Property = EmbObjInner.Properties_.Add ("pInner", 19)
|
|
Property.Qualifiers_.Add "key", true
|
|
Property.Value = 10
|
|
EmbObjInner.Put_
|
|
Set EmbObjInner = Service.Get("EmbObjInner")
|
|
|
|
if Err <> 0 Then
|
|
WScript.Echo Err.Description
|
|
Err.Clear
|
|
End if
|
|
|
|
'************************************
|
|
'Create another embedded object class
|
|
'************************************
|
|
|
|
'
|
|
' [wazzuck("oxter")]
|
|
' class EmbObjOuter {
|
|
' uint32 p0 = 25;
|
|
' EmbObjInner pOuter = instance of EmbObjInner { pInner = 564; };
|
|
' EmbObjInner pOuterArray[] = {
|
|
' instance of EmbObjInner { pInner = 0; },
|
|
' instance of EmbObjInner { pInner = 1; },
|
|
' instance of EmbObjInner { pInner = 2; }
|
|
' };
|
|
' };
|
|
|
|
Set EmbObjOuter = Service.Get()
|
|
EmbObjOuter.Path_.Class = "EmbObjOuter"
|
|
EmbObjOuter.Qualifiers_.Add "wazzuck", "oxter"
|
|
EmbObjOuter.Properties_.Add ("p0", 19).Value = 25
|
|
Set Property = EmbObjOuter.Properties_.Add ("pOuter", 13)
|
|
Set Instance = EmbObjInner.SpawnInstance_
|
|
Instance.pInner = 564
|
|
Property.Value = Instance
|
|
|
|
' Add an array of embedded objects property
|
|
Set Property = EmbObjOuter.Properties_.Add ("pOuterArray", 13, true)
|
|
Property.Qualifiers_.Add "cimtype","object:EmbObjInner"
|
|
|
|
Set Instance0 = EmbObjInner.SpawnInstance_
|
|
Instance0.pInner = 0
|
|
Set Instance1 = EmbObjInner.SpawnInstance_
|
|
Instance1.pInner = 1
|
|
Set Instance2 = EmbObjInner.SpawnInstance_
|
|
Instance2.pInner = 2
|
|
Property.Value = Array (Instance0, Instance1, Instance2)
|
|
|
|
Set Instance3 = EmbObjInner.SpawnInstance_
|
|
Instance3.pInner = 42
|
|
Property.Value(3) = Instance3
|
|
|
|
Set Instance4 = EmbObjInner.SpawnInstance_
|
|
Instance4.pInner = 78
|
|
EmbObjOuter.pOuterArray (4) = Instance4
|
|
|
|
EmbObjOuter.Put_
|
|
Set EmbObjOuter = Service.Get("EmbObjOuter")
|
|
|
|
if Err <> 0 Then
|
|
WScript.Echo Err.Description
|
|
Err.Clear
|
|
End if
|
|
|
|
'Create a final class which wraps both embedded objects
|
|
'
|
|
'
|
|
Set aClass = Service.Get()
|
|
aClass.Path_.Class = "EMBPROPTEST01"
|
|
Set Property = aClass.Properties_.Add ("p1", 13)
|
|
Set Instance = EmbObjOuter.SpawnInstance_
|
|
Instance.p0 = 2546
|
|
Property.Value = Instance
|
|
aClass.Put_
|
|
|
|
WScript.Echo "The initial value of p0 is [2546]", Property.Value.p0
|
|
WScript.Echo "The initial value of p0 is [2546]", aClass.Properties_("p1").Value.Properties_("p0")
|
|
WScript.Echo "The initial value of pInner is [564]", Property.Value.pOuter.pInner
|
|
WScript.Echo "The initial value of pInner is [564]", _
|
|
aClass.Properties_("p1").Value.Properties_("pOuter").Value.Properties_("pInner")
|
|
|
|
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(0).pInner is [0]:", aClass.p1.pOuterArray(0).pInner
|
|
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(1).pInner is [1]:", aClass.p1.pOuterArray(1).pInner
|
|
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(2).pInner is [2]:", aClass.p1.pOuterArray(2).pInner
|
|
WScript.Echo "The initial value of EMBPROPTEST01.p1.pOuterArray(3).pInner is [42]:", aClass.p1.pOuterArray(3).pInner
|
|
Set aClass = Service.Get("EMBPROPTEST01")
|
|
|
|
'Now try direct assignment to the outer emb obj
|
|
aClass.p1.p0 = 23
|
|
WScript.Echo "The new value of p0 is [23]", aClass.p1.p0
|
|
|
|
Set Property = aClass.p1
|
|
Property.p0 = 787
|
|
WScript.Echo "The new value of p0 is [787]", aClass.p1.p0
|
|
|
|
aClass.Properties_("p1").Value.p0 = 56
|
|
WScript.Echo "The new value of p0 is [56]", aClass.p1.p0
|
|
|
|
'Now try direct assignment to the inner emb obj
|
|
aClass.p1.pOuter.pInner = 4
|
|
WScript.Echo "The new value of pInner is [4]", aClass.p1.pOuter.pInner
|
|
|
|
Set Property = aClass.p1.pOuter
|
|
Property.pInner = 12
|
|
WScript.Echo "The new value of pInner is [12]", aClass.p1.pOuter.pInner
|
|
|
|
'Now try assignment to the inner emb obj array
|
|
aClass.p1.pOuterArray(1).pInner = 5675
|
|
WScript.Echo "The new value of Class.p1.pOuterArray(1).pInner is [5675]", aClass.p1.pOuterArray(1).pInner
|
|
|
|
'None of the following will work because VBSCript needs to be told explicitly when to use
|
|
'a default automation property (i.e. they all require resolution to the "Value" property
|
|
'WScript.Echo "The initial value of p1 is", Class.Properties_("p1").p
|
|
'WScript.Echo "The initial value of p1 is", Class.Properties_("p1").Properties_("p")
|
|
'WScript.Echo "The initial value of p1 is", Property.p
|
|
|
|
if Err <> 0 Then
|
|
WScript.Echo Err.Description
|
|
Err.Clear
|
|
End if
|
|
|
|
|