Class: WinRM::Shells::Elevated
- Inherits:
-
Object
- Object
- WinRM::Shells::Elevated
- Defined in:
- lib/winrm/shells/elevated.rb
Overview
Runs PowerShell commands elevated via a scheduled task
Instance Attribute Summary collapse
-
#password ⇒ String
The admin user password.
-
#username ⇒ String
The admin user name to execute the scheduled task as.
Instance Method Summary collapse
-
#close ⇒ Object
Closes the shell if one is open.
-
#initialize(connection_opts, transport, logger) ⇒ Elevated
constructor
Create a new elevated shell.
-
#run(command, &block) ⇒ WinRM::Output
Run a command or PowerShell script elevated without any of the restrictions that WinRM puts in place.
Constructor Details
#initialize(connection_opts, transport, logger) ⇒ Elevated
Create a new elevated shell
30 31 32 33 34 35 36 |
# File 'lib/winrm/shells/elevated.rb', line 30 def initialize(connection_opts, transport, logger) @logger = logger @username = connection_opts[:user] @password = connection_opts[:password] @shell = Powershell.new(connection_opts, transport, logger) @winrm_file_transporter = WinRM::FS::Core::FileTransporter.new(@shell) end |
Instance Attribute Details
#password ⇒ String
Returns The admin user password.
42 43 44 |
# File 'lib/winrm/shells/elevated.rb', line 42 def password @password end |
#username ⇒ String
Returns The admin user name to execute the scheduled task as.
39 40 41 |
# File 'lib/winrm/shells/elevated.rb', line 39 def username @username end |
Instance Method Details
#close ⇒ Object
Closes the shell if one is open
60 61 62 |
# File 'lib/winrm/shells/elevated.rb', line 60 def close @shell.close end |
#run(command, &block) ⇒ WinRM::Output
Run a command or PowerShell script elevated without any of the restrictions that WinRM puts in place.
50 51 52 53 54 55 56 57 |
# File 'lib/winrm/shells/elevated.rb', line 50 def run(command, &block) # if an IO object is passed read it, otherwise assume the contents of the file were passed script_text = command.respond_to?(:read) ? command.read : command script_path = upload_elevated_shell_script(script_text) wrapped_script = wrap_in_scheduled_task(script_path, username, password) @shell.run(wrapped_script, &block) end |