README.md in winrm-elevated-0.3.0 vs README.md in winrm-elevated-0.4.0

- old
+ new

@@ -7,12 +7,28 @@ ```ruby require 'winrm' require 'winrm-elevated' service = WinRM::WinRMWebService.new(... -elevated_runner = WinRM::Elevated::Runner.new(service) -result = elevated_runner.powershell_elevated('dir', 'Administrator', 'password') -puts "Std out: #{result.output}" +service.create_executor do |executor| + elevated_runner = WinRM::Elevated::Runner.new(executor) + result = elevated_runner.powershell_elevated('dir', 'Administrator', 'password') + puts "Std out: #{result.output}" +end +``` + +### Impersonating a service account +By passing a `nil` password, winrm-elevated will assume that the command should run as a service account: +```ruby +require 'winrm' +require 'winrm-elevated' + +service = WinRM::WinRMWebService.new(... +service.create_executor do |executor| + elevated_runner = WinRM::Elevated::Runner.new(service) + result = elevated_runner.powershell_elevated('dir', 'System', nil) + puts "Std out: #{result.output}" +end ``` ## How does it work? The gem works by creating a new logon session local to the Windows box by using a scheduled task. After this point WinRM is just used to read output from the scheduled task via a log file.