Class: Inspec::Resources::VBScript
- Inherits:
-
Powershell
- Object
- Cmd
- Powershell
- Inspec::Resources::VBScript
- Defined in:
- lib/inspec/resources/vbscript.rb
Overview
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
Instance Attribute Summary
Attributes inherited from Cmd
Instance Method Summary collapse
-
#initialize(vbscript) ⇒ VBScript
constructor
A new instance of VBScript.
- #result ⇒ Object
- #to_s ⇒ Object
Methods inherited from Powershell
Methods inherited from Cmd
#exist?, #exit_status, #stderr, #stdout
Constructor Details
#initialize(vbscript) ⇒ VBScript
Returns a new instance of VBScript.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/inspec/resources/vbscript.rb', line 35 def initialize(vbscript) @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 |
Instance Method Details
#result ⇒ Object
50 51 52 |
# File 'lib/inspec/resources/vbscript.rb', line 50 def result @result ||= parse_stdout end |
#to_s ⇒ Object
54 55 56 |
# File 'lib/inspec/resources/vbscript.rb', line 54 def to_s "Windows VBScript" end |