| # wql.rb |
| # WS-Man Query Language (for WINRM) |
| # |
| # http://msdn.microsoft.com/en-us/library/aa394606(VS.85).aspx |
| |
| require 'test/unit' |
| require 'rexml/document' |
| require File.join(File.dirname(__FILE__),'_loadpath') |
| require 'openwsman' |
| require File.join(File.dirname(__FILE__), '_client') |
| |
| class WsmanTest < Test::Unit::TestCase |
| |
| def test_wql |
| client = Client.open |
| options = Openwsman::ClientOptions.new |
| options.flags = Openwsman::FLAG_ENUMERATION_OPTIMIZATION |
| options.max_elements = 999 |
| # options.set_dump_request |
| |
| namespace = "root/cimv2" |
| classname = "*" # must be '*' for WQL |
| uri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/#{namespace}/#{classname}" |
| |
| filter = Openwsman::Filter.new |
| # see winenum.rb for more examples |
| filter.wql "select * from meta_class" |
| |
| result = client.enumerate( options, filter, uri ) |
| assert result |
| if result.fault? |
| puts "Enumerate returned fault" |
| exit 1 |
| end |
| |
| # puts "Result #{result.to_xml}" |
| results = 0 |
| faults = 0 |
| |
| loop do |
| result.Items.each do |node| |
| results += 1 |
| puts node.name |
| end |
| context = result.context |
| break unless context |
| result = client.pull( options, nil, uri, context ) |
| break unless result |
| end |
| puts "#{results} results, #{faults} faults" |
| end |
| end |