Sha256: 77afe2c0b0433ae6b94d20e725868c8e4428f4933c440b2134e6a839e185de98
Contents?: true
Size: 1.38 KB
Versions: 25
Compression:
Stored size: 1.38 KB
Contents
# -*- encoding: utf-8 -*- require 'nori' require_relative 'base' module WinRM module WSMV # WSMV message to 'pull' rest of enumeration results from Windows via WQL class WqlPull < Base def initialize(session_opts, namespace, enumeration_context) @session_opts = session_opts @namespace = namespace @enumeration_context = enumeration_context end def process_response(response) parser = Nori.new( parser: :rexml, advanced_typecasting: false, convert_tags_to: ->(tag) { tag.snakecase.to_sym }, strip_namespaces: true ) parser.parse(response.to_s)[:envelope][:body] end protected def create_header(header) header << Gyoku.xml(wql_header) end def create_body(body) body.tag!("#{NS_ENUM}:Pull") { |en| en << Gyoku.xml(wql_body) } end private def wql_header merge_headers( shared_headers(@session_opts), resource_uri_wmi(@namespace), action_enumerate_pull ) end def wql_body { "#{NS_ENUM}:EnumerationContext" => @enumeration_context, "#{NS_WSMAN_DMTF}:OptimizeEnumeration" => nil, "#{NS_ENUM}:MaxElements" => '32000', "#{NS_WSMAN_MSFT}:SessionId" => "uuid:#{@session_opts[:session_id]}" } end end end end
Version data entries
25 entries across 22 versions & 3 rubygems