Sha256: f1f63157423f1d9f2a1e3dd33c8f91fb5bb77baf43cf23e42b47049ea139c0e2

Contents?: true

Size: 1.9 KB

Versions: 67

Compression:

Stored size: 1.9 KB

Contents

# encoding: utf-8
# author: Christoph Hartmann
# author: Dominik Richter

require 'securerandom'

module Inspec::Resources
  # This resource allows users to run vbscript on windows machines. We decided
  # not to use scriptcontrol, due to the fact that it works on 32 bit systems only:
  # $script = new-object -comobject MSScriptControl.ScriptControl
  # $script.language = "vbscript"
  # $script.ExecuteStatement($Cmd)
  #
  # For that reason, we call csript.exe directy with the script. Vbscript is
  # embedded in Powershell to ease the file transfer and reuse powershell
  # encodedCommand since train does not allow file upload yet.
  #
  # We run cscript with /nologo option to get the expected output only with the
  # version information.
  #
  # Since Windows does not delete tmp files automatically, we remove the VBScript
  # after we executed it
  # @see https://msdn.microsoft.com/en-us/library/aa364991.aspx
  class VBScript < PowershellScript
    name 'vbscript'
    desc ''
    example "
      script = <<-EOH
        # you vbscript
      EOH

      describe vbscript(script) do
        its('stdout') { should eq 'output' }
      end
    "

    def initialize(vbscript)
      return skip_resource 'The `vbscript` resource is not supported on your OS yet.' unless inspec.os.windows?
      @seperator = SecureRandom.uuid
      cmd = <<-EOH
$vbscript = @"
#{vbscript}
Wscript.Stdout.Write "#{@seperator}"
"@
$filename = [System.IO.Path]::GetTempFileName() + ".vbs"
New-Item $filename -type file -force -value $vbscript | Out-Null
cscript.exe /nologo $filename
Remove-Item $filename | Out-Null
EOH
      super(cmd)
    end

    def result
      @result ||= parse_stdout
    end

    def to_s
      'Windows VBScript'
    end

    private

    def parse_stdout
      res = inspec.backend.run_command(@command)
      parsed_result = res.stdout.gsub(/#{@seperator}\r\n$/, '')
      res.stdout = parsed_result
      res
    end
  end
end

Version data entries

67 entries across 67 versions & 1 rubygems

Version Path
inspec-1.45.9 lib/resources/vbscript.rb
inspec-1.44.8 lib/resources/vbscript.rb
inspec-1.43.8 lib/resources/vbscript.rb
inspec-1.43.5 lib/resources/vbscript.rb
inspec-1.42.3 lib/resources/vbscript.rb
inspec-1.41.0 lib/resources/vbscript.rb
inspec-1.40.0 lib/resources/vbscript.rb
inspec-1.39.1 lib/resources/vbscript.rb
inspec-1.38.8 lib/resources/vbscript.rb
inspec-1.37.6 lib/resources/vbscript.rb
inspec-1.36.1 lib/resources/vbscript.rb
inspec-1.35.1 lib/resources/vbscript.rb
inspec-1.34.1 lib/resources/vbscript.rb
inspec-1.33.12 lib/resources/vbscript.rb
inspec-1.33.1 lib/resources/vbscript.rb
inspec-1.32.1 lib/resources/vbscript.rb
inspec-1.31.1 lib/resources/vbscript.rb
inspec-1.31.0 lib/resources/vbscript.rb
inspec-1.30.0 lib/resources/vbscript.rb
inspec-1.29.0 lib/resources/vbscript.rb