; $wmi(class,N,property[,timeout])
; class: name of the WMI class to be used
; N: the Nth class instance. N can be 0, to return the total number of instances
; property: the property of interest (ignored if N = 0)
; timeout (optional): number of seconds the COM connection is kept open (default is 120 seconds)
alias wmi {
if $0 < 2 || ($0 == 2 && $2 != 0) { return }
if !$com($1) {
.comopen $1^loc WbemScripting.SWbemLocator
if ($comerr) return
.comclose $1^loc $com($1^loc,ConnectServer,3,dispatch* $1^con)
if ($com($1^con)) .comclose $v1 $com($v1,InstancesOf,3,bstr*,$1,dispatch* $1)
if (!$com($1)) return
}
.timerwmi: $+ $1 -oi 1 $iif($0 > 2 && $($ $+ $0,2) isnum 0-,$v1,120) if ($com( $1)) .comclose $1
if ($2 == 0) return $comval($1,$2)
return $comval($1,$2,$3)
}