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.