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