Class: ChefPowerShell::PowerShell

Inherits:
Object
  • Object
show all
Defined in:
lib/chef-powershell/powershell.rb

Direct Known Subclasses

Pwsh

Defined Under Namespace

Modules: PowerMod

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(script, timeout: -1)) ⇒ Object

Run a command under PowerShell via FFI This implementation requires the managed dll and native wrapper to be in the library search path on Windows (i.e. c:windowssystem32 or in the same location as ruby.exe).

Requires: .NET Framework 4.0 or higher on the target machine.

Parameters:

  • script (String)

    script to run

  • timeout (Integer, nil) (defaults to: -1))

    timeout in seconds.



39
40
41
42
43
44
45
46
# File 'lib/chef-powershell/powershell.rb', line 39

def initialize(script, timeout: -1)
  # This Powershell DLL source lives here: https://github.com/chef/chef-powershell-shim
  # Every merge into that repo triggers a Habitat build and verification process.
  # There is no mechanism to build a Windows gem file. It has to be done manually running manual_gem_release.ps1
  # Bundle install ensures that the correct architecture binaries are installed into the path.
  @powershell_dll = Gem.loaded_specs["chef-powershell"].full_gem_path + "/bin/ruby_bin_folder/#{ENV["PROCESSOR_ARCHITECTURE"]}/Chef.PowerShell.Wrapper.dll"
  exec(script, timeout: timeout)
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



27
28
29
# File 'lib/chef-powershell/powershell.rb', line 27

def errors
  @errors
end

#resultObject (readonly)

Returns the value of attribute result.



26
27
28
# File 'lib/chef-powershell/powershell.rb', line 26

def result
  @result
end

#verboseObject (readonly)

Returns the value of attribute verbose.



28
29
30
# File 'lib/chef-powershell/powershell.rb', line 28

def verbose
  @verbose
end

Instance Method Details

#error!Object

Raises:



62
63
64
# File 'lib/chef-powershell/powershell.rb', line 62

def error!
  raise ChefPowerShell::PowerShellExceptions::PowerShellCommandFailed, "Unexpected exit in PowerShell command: #{@errors}" if error?
end

#error?Boolean

Was there an error running the command

Returns:

  • (Boolean)


53
54
55
56
57
# File 'lib/chef-powershell/powershell.rb', line 53

def error?
  return true if errors.count > 0

  false
end