blob: 94bac13c0800e6b3e7363559e5d766ce82752689 [file] [log] [blame]
# win32_services.rb
# enumerate/pull/release for Win32_Service
#
# Coded after wsmancli/examples/win32_service.c
#
#
require 'test/unit'
require 'rexml/document'
require File.join(File.dirname(__FILE__),'_loadpath')
require 'openwsman'
require '_client'
class WsmanTest < Test::Unit::TestCase
def test_client
client = Client.open
assert client
options = Openwsman::ClientOptions.new
assert options
# options.set_dump_request
# puts "Flags = #{options.flags}"
#
# see http://msdn2.microsoft.com/en-us/library/aa386179.aspx for a list of CIM classes
# the Win32 classes are derived from
#
# uri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
uri = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem"
result = client.enumerate( options, nil, uri )
assert result
results = 0
faults = 0
context = nil
#loop do
context = result.context
raise "No context inside result" unless context
# puts "Context #{context} retrieved"
result = client.pull( options, nil, uri, context )
raise "client.pull returned nil" unless result
results += 1
if result.fault?
puts "Got fault"
faults += 1
end
node = result.body.PullResponse.Items.child
node.each do |child|
text = child.text
acount = child.attr_count
puts "Child [#{acount}] #{child.name}: #{text}"
if acount > 0
child.each_attr{ |attr| puts "\tAttr #{attr.ns}:#{attr.name}=#{attr.value}" }
end
# return false if text.nil?
end
name = node.Name
state = node.State
puts "#{name} is #{state}"
#end
client.release( options, uri, context ) if context
puts "Context released, #{results} results, #{faults} faults"
end
end