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.
228 lines
5.5 KiB
228 lines
5.5 KiB
<!--
|
|
******************************************************************
|
|
'
|
|
' vector.wsf
|
|
'
|
|
' Purpose: test vectors
|
|
'
|
|
' Parameters: none
|
|
'
|
|
' Returns: 0 - success
|
|
' 1 - failure
|
|
'
|
|
'*****************************************************************
|
|
-->
|
|
|
|
<job id="WMI Vector Test">
|
|
<reference object="WbemScripting.SWbemLocator" version="1.2"/>
|
|
<script language="VBScript">
|
|
|
|
on error resume next
|
|
|
|
set scriptHelper = CreateObject("WMIScriptHelper.WSC")
|
|
scriptHelper.logFile = "c:\temp\vector.txt"
|
|
scriptHelper.loggingLevel = 3
|
|
scriptHelper.testName = "WMI Vector"
|
|
scriptHelper.testStart
|
|
|
|
dim l
|
|
dim ns
|
|
|
|
TestPreamble
|
|
TestVectorOpen
|
|
TestPostamble
|
|
|
|
scriptHelper.testComplete
|
|
|
|
if scriptHelper.statusOK then
|
|
WScript.Echo "PASS"
|
|
WScript.Quit 0
|
|
else
|
|
WScript.Echo "FAIL"
|
|
WScript.Quit 1
|
|
end if
|
|
|
|
'******************************************************************
|
|
'
|
|
' TestPreamble
|
|
'
|
|
' Purpose: Create some objects for this test
|
|
'
|
|
'*****************************************************************
|
|
|
|
Sub TestPreamble
|
|
|
|
on error resume next
|
|
|
|
' Create a locator
|
|
set l = CreateObject("WbemScripting.SWbemLocatorEx")
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to create locator"
|
|
else
|
|
scriptHelper.writeToLog "Successful creation of locator", 2
|
|
end if
|
|
|
|
' Connect to the namespace
|
|
set ns = l.ConnectServer (,"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 sub-namespace
|
|
set newNamespace = ns.Get("__Namespace").SpawnInstance_
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to get new namespace"
|
|
else
|
|
scriptHelper.writeToLog "Successful get of new namespace", 2
|
|
end if
|
|
|
|
|
|
newNamespace.Name = "endpoint"
|
|
newNamespace.Put_
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to create new namespace"
|
|
else
|
|
scriptHelper.writeToLog "Successful creation of new namespace", 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 = "VECTOR000TEST"
|
|
newClass.Qualifiers_.Add "vector", true
|
|
|
|
' Add a key property (uint32)
|
|
set p0 = newClass.Properties_.Add ("p0", wbemCimtypeUint32)
|
|
p0.Qualifiers_.Add "key", true
|
|
|
|
' Add the vector pointer
|
|
set pV = newClass.Properties_.Add ("pV", wbemCimtypeReference)
|
|
|
|
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 and make an instance
|
|
set newInstance = ns.Get ("VECTOR000TEST").SpawnInstance_
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to get new instance"
|
|
else
|
|
scriptHelper.writeToLog "Successful get of new instance", 2
|
|
end if
|
|
|
|
' Create an instance
|
|
newInstance.p0 = 1
|
|
newInstance.pV = "\\.\root\default:__Namespace='endpoint'"
|
|
newInstance.Put_
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to create endpoint instance"
|
|
else
|
|
scriptHelper.writeToLog "Successful creation of instance", 2
|
|
end if
|
|
|
|
' Bind to the new namespace
|
|
set ns2 = GetObject("winmgmts:root\default\endpoint")
|
|
set newClass = ns2.Get
|
|
newClass.Path_.Class = "VECTOR001TEST"
|
|
newClass.Put_
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to create class in endpoint namespace"
|
|
else
|
|
scriptHelper.writeToLog "Successful creation of class in endpoint namespace", 2
|
|
end if
|
|
|
|
End Sub
|
|
|
|
'******************************************************************
|
|
'
|
|
' TestPostamble
|
|
'
|
|
' Purpose: Create some objects for this test
|
|
'
|
|
'*****************************************************************
|
|
|
|
Sub TestPostamble
|
|
|
|
on error resume next
|
|
|
|
' Clean up
|
|
ns.Delete ("__Namespace='endpoint'")
|
|
ns.Delete ("VECTOR001TEST")
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to delete classes"
|
|
else
|
|
scriptHelper.writeToLog "Successful delete of classes", 2
|
|
end if
|
|
|
|
End Sub
|
|
|
|
'******************************************************************
|
|
'
|
|
' TestVectorOpen
|
|
'
|
|
' Purpose: test SWbemServicesEx vector functionality
|
|
'
|
|
'*****************************************************************
|
|
|
|
Sub TestVectorOpen
|
|
|
|
on error resume next
|
|
|
|
scriptHelper.writeToLog ">>>", 2
|
|
scriptHelper.writeToLog ">>> TestVectorOpen", 2
|
|
scriptHelper.writeToLog ">>>", 2
|
|
|
|
' Open the instance as a vector
|
|
set vector = ns.Open ("CONTAINER000TEST=1", wbemConnectionFlagOpenVector _
|
|
OR wbemConnectionFlagAllowNamespaceTraversal OR wbemConnectionFlagAllowMachineTraversal)
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to open instance as vector"
|
|
else
|
|
scriptHelper.writeToLog "Successful opening of instance as vector", 2
|
|
end if
|
|
|
|
|
|
'Just to check we're in the right place, get our class
|
|
set newClass = vector.Get ("VECTOR001TEST")
|
|
|
|
if err <> 0 then
|
|
scriptHelper.writeErrorToLog err, "Failed to get class from dereferenced vector"
|
|
else
|
|
scriptHelper.writeToLog "Successful retrieval of class from dereferenced vector: " & newClass.Path_.Path, 2
|
|
end if
|
|
|
|
|
|
scriptHelper.writeToLog "<<<", 2
|
|
scriptHelper.writeToLog "<<< TestVectorOpen", 2
|
|
scriptHelper.writeToLog "<<<", 2
|
|
|
|
End Sub
|
|
|
|
</script>
|
|
</job>
|