class WmiLite::Wmi
Public Class Methods
new(namespace = nil)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 25 def initialize(namespace = nil) @namespace = namespace.nil? ? "root/cimv2" : namespace @connection = nil end
Public Instance Methods
first_of(wmi_class)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 38 def first_of(wmi_class) query_result = start_query("select * from #{wmi_class}", wmi_class) first_result = nil query_result.each do |record| first_result = record break end first_result.nil? ? nil : wmi_result_to_snapshot(first_result) end
instances_of(wmi_class)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 34 def instances_of(wmi_class) query_with_context("select * from #{wmi_class}", wmi_class) end
query(wql_query)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 30 def query(wql_query) query_with_context(wql_query) end
Private Instance Methods
connect_to_namespace()
click to toggle source
# File lib/wmi-lite/wmi.rb, line 81 def connect_to_namespace if @connection.nil? namespace = @namespace.nil? ? "root/cimv2" : @namespace locator = WIN32OLE.new("WbemScripting.SWbemLocator") begin @connection = locator.ConnectServer(".", namespace) rescue WIN32OLERuntimeError => native_exception raise WmiException.new(native_exception, :ConnectServer, @namespace) end end end
query_with_context(wql_query, diagnostic_class_name = nil)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 50 def query_with_context(wql_query, diagnostic_class_name = nil) results = start_query(wql_query, diagnostic_class_name) result_set = [] results.each do |result| result_set.push(wmi_result_to_snapshot(result)) end result_set end
raise_if_failed(result)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 74 def raise_if_failed(result) # Attempting to access the count property of the underlying # COM (OLE) object will trigger an exception if the query # was unsuccessful. result.count end
start_query(wql_query, diagnostic_class_name = nil)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 62 def start_query(wql_query, diagnostic_class_name = nil) result = nil connect_to_namespace begin result = @connection.ExecQuery(wql_query) raise_if_failed(result) rescue WIN32OLERuntimeError => native_exception raise WmiException.new(native_exception, :ExecQuery, @namespace, wql_query, diagnostic_class_name) end result end
wmi_result_to_snapshot(wmi_object)
click to toggle source
# File lib/wmi-lite/wmi.rb, line 93 def wmi_result_to_snapshot(wmi_object) snapshot = Instance.new(wmi_object) end