plugins/communicators/winrm/shell.rb in vagrant-unbundled-2.2.0.0 vs plugins/communicators/winrm/shell.rb in vagrant-unbundled-2.2.2.0
- old
+ new
@@ -69,11 +69,17 @@
end
def elevated(command, opts = {}, &block)
connection.shell(:elevated) do |shell|
shell.interactive_logon = opts[:interactive] || false
- execute_with_rescue(shell, command, &block)
+ uname = shell.username
+ begin
+ shell.username = elevated_username
+ execute_with_rescue(shell, command, &block)
+ ensure
+ shell.username = uname
+ end
end
end
def wql(query, opts = {}, &block)
retryable(tries: @config.max_tries, on: @@exceptions_to_retry_on, sleep: @config.retry_delay) do
@@ -213,9 +219,27 @@
port: @port,
basic_auth_only: @config.basic_auth_only,
no_ssl_peer_verification: !@config.ssl_peer_verification,
retry_delay: @config.retry_delay,
retry_limit: @config.max_tries }
+ end
+
+ def elevated_username
+ if @elevated_username
+ return @elevated_username
+ end
+ if username.include?("\\")
+ return @elevated_username = username
+ end
+ computername = ""
+ powershell("Write-Output $env:computername") do |type, data|
+ computername << data if type == :stdout
+ end
+ computername.strip!
+ if computername.empty?
+ return @elevated_username = username
+ end
+ @elevated_username = "#{computername}\\#{username}"
end
end #WinShell class
end
end