Sha256: 4e3a4777556f11e97de15d20ce990f7aa1e85281c807dd5c50817752626c4b64

Contents?: true

Size: 1.24 KB

Versions: 108

Compression:

Stored size: 1.24 KB

Contents

module Specinfra
  module Backend
    class Winrm < Base
      include PowerShell::ScriptHelper

      def os_info
        { :family => 'windows', :release => nil, :arch => nil }
      end

      def run_command(cmd, opts={})
        script = create_script(cmd)
        winrm = get_config(:winrm)

        stdout, stderr = ''
        exitcode = 0

        if Gem.loaded_specs['winrm'].version < Gem::Version.create('2.0')
          # Use winrm V1 API
          result = winrm.powershell(script)
          stdout, stderr = [:stdout, :stderr].map do |s|
            result[:data].select {|item| item.key? s}.map {|item| item[s]}.join
          end
          exitcode = result[:exitcode]
        else
          # Use winrm V2 API
          winrm.shell(:powershell) do |shell|
            result = shell.run(script)
            stdout = result.stdout.to_s
            stderr = result.stderr.to_s
            exitcode = result.exitcode
          end
        end

        exitcode = 1 if exitcode == 0 and !stderr.empty?

        if @example
          @example.metadata[:command] = script
          @example.metadata[:stdout]  = stdout + stderr
        end

        CommandResult.new :stdout => stdout, :stderr => stderr, :exit_status => exitcode
      end
    end
  end
end

Version data entries

108 entries across 108 versions & 1 rubygems

Version Path
specinfra-2.91.0 lib/specinfra/backend/winrm.rb
specinfra-2.90.1 lib/specinfra/backend/winrm.rb
specinfra-2.90.0 lib/specinfra/backend/winrm.rb
specinfra-2.89.0 lib/specinfra/backend/winrm.rb
specinfra-2.88.2 lib/specinfra/backend/winrm.rb
specinfra-2.88.1 lib/specinfra/backend/winrm.rb
specinfra-2.88.0 lib/specinfra/backend/winrm.rb
specinfra-2.87.2 lib/specinfra/backend/winrm.rb
specinfra-2.87.1 lib/specinfra/backend/winrm.rb
specinfra-2.87.0 lib/specinfra/backend/winrm.rb
specinfra-2.86.0 lib/specinfra/backend/winrm.rb
specinfra-2.85.1 lib/specinfra/backend/winrm.rb
specinfra-2.85.0 lib/specinfra/backend/winrm.rb
specinfra-2.84.1 lib/specinfra/backend/winrm.rb
specinfra-2.84.0 lib/specinfra/backend/winrm.rb
specinfra-2.83.4 lib/specinfra/backend/winrm.rb
specinfra-2.83.3 lib/specinfra/backend/winrm.rb
specinfra-2.83.2 lib/specinfra/backend/winrm.rb
specinfra-2.83.1 lib/specinfra/backend/winrm.rb
specinfra-2.83.0 lib/specinfra/backend/winrm.rb