Sign in to follow this  
Followers 0
John C.

How to make a generic function for WMI query?

2 posts in this topic

#1 ·  Posted (edited)

I am trying to make a generic function for WMI query by substituting the property's name using a variable. However, AutoIT3 always returns syntax error. The problem is how to let autoit treats '.' differently.

WMIQuery("CIMV2","Win32_PerfFormattedData_TermService_TerminalServices","TotalSessions,ActiveSessions")

Func WMIQuery($NameSpace,$path,$Properties)
    Local $output
    $Properties = StringSplit($Properties, ',')
    $objWMI = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\localhost\Root\" & $NameSpace)
    If Not IsObj($objWMI) Then 
        ConsoleWrite("Error accessing name space" & @LF)
        Exit
    EndIf
    
    $objCol = $objWMI.ExecQuery("Select * from " & $path)

    For $obj In $objCol
        For $i = 1 to $Properties[0]
            $output = $obj.TotalSessions ;This line works
            ;$output = ($obj.$Properties[$i])  ;cause syntax error
            ;$output = ($obj & '.' & $Properties[$i]) ;No return. How to make this line work?
            ;debug ConsoleWrite($Properties[$i] & @LF)
        Next
    Next
    ConsoleWrite($output & @LF)
EndFunc
Edited by John C.

Share this post


Link to post
Share on other sites



I think you might be looking for Execute():

$output = Execute("$obj." & $Properties[$i])

:(


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0