Method: Vagrant::Util::PowerShell.version

Defined in:
lib/vagrant/util/powershell.rb

.versionString

Returns the version of PowerShell that is installed.

Returns:

  • (String)


208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
# File 'lib/vagrant/util/powershell.rb', line 208

def self.version
  if !defined?(@_powershell_version)
    command = [
      executable,
      "-NoLogo",
      "-NoProfile",
      "-NonInteractive",
      "-ExecutionPolicy", "Bypass",
      "-Command",
      "Write-Output $PSVersionTable.PSVersion.Major"
    ].flatten

    version = nil
    timeout = ENV["VAGRANT_POWERSHELL_VERSION_DETECTION_TIMEOUT"].to_i
    if timeout < 1
      timeout = DEFAULT_VERSION_DETECTION_TIMEOUT
    end
    begin
      r = Subprocess.execute(*command,
        notify: [:stdout, :stderr],
        timeout: timeout,
      ) {|io_name,data| version = data}
    rescue Vagrant::Util::Subprocess::TimeoutExceeded
      LOGGER.debug("Timeout exceeded while attempting to determine version of Powershell.")
    end

    @_powershell_version = version
  end
  @_powershell_version
end