Advertisement
ChristophX86

QueryWMI

Mar 16th, 2013
469
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 0.89 KB | None | 0 0
  1. ConsoleWrite(QueryWMI("SELECT * FROM Win32_Battery DISPLAY Name, Caption, Status, EstimatedChargeRemaining"))
  2.  
  3. Func QueryWMI($Query, $Computer="localhost")
  4.     Local $0, $WMI, $Items, $Output = "", $Item, $i
  5.  
  6.     $Query = StringRegExp($Query, "(?i)^(SELECT .+? FROM .+?) DISPLAY (.+?)$", 3)
  7.     If @error Then Return SetError(-1, 0, "")
  8.     $0 = StringSplit($Query[1], ",")
  9.     For $i = 1 To $0[0]
  10.         $0[$i] = StringRegExpReplace($0[$i], "[^A-Za-z0-9]", "")
  11.     Next
  12.     $Query = StringStripWS($Query[0], 7)
  13.  
  14.     $WMI = ObjGet("winmgmts:\\" & $Computer & "\")
  15.     If @error Then Return SetError(1, 0, "")
  16.     $Items = $WMI.ExecQuery($Query, "WQL", 0x30)
  17.     If (Not IsObj($Items)) Then Return SetError(2, 0, "")
  18.  
  19.     For $Item In $Items
  20.         For $i = 1 To $0[0]
  21.             If (StringLen($0[$i]) > 0) Then
  22.                 $Output &= $0[$i]&": " & Execute("$Item."&$0[$i]) & @CRLF
  23.             EndIf
  24.         Next
  25.         $Output &= @CRLF
  26.     Next
  27.     Return $Output
  28. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement