class Inspec::Resources::WindowsTasks
Public Class Methods
new(taskuri)
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 29 def initialize(taskuri) @taskuri = taskuri @cache = nil end
Public Instance Methods
disabled?()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 47 def disabled? return false if info.nil? || info[:state].nil? info[:scheduled_task_state] == "Disabled" || info[:state] == "Disabled" end
enabled?()
click to toggle source
rubocop:disable Style/WordArray
# File lib/inspec/resources/windows_task.rb, line 41 def enabled? return false if info.nil? || info[:state].nil? ["Ready", "Running"].include?(info[:state]) end
exists?()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 34 def exists? return true unless info.nil? || info[:uri].nil? false end
info()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 73 def info return @cache unless @cache.nil? # PowerShell v5 has Get-ScheduledTask cmdlet, # _using something with backward support to v3_ # script = "Get-ScheduledTask | ? { $_.URI -eq '#{@taskuri}' } | Select-Object URI,@{N='State';E={$_.State.ToString()}} | ConvertTo-Json" # Using schtasks as suggested by @modille but aligning property names to match cmdlet to future proof. script = "schtasks /query /v /fo csv /tn '#{@taskuri}' | ConvertFrom-Csv | Select @{N='URI';E={$_.TaskName}},@{N='State';E={$_.Status.ToString()}},'Logon Mode','Last Result','Task To Run','Run As User','Scheduled Task State' | ConvertTo-Json -Compress" cmd = inspec.powershell(script) begin params = JSON.parse(cmd.stdout) rescue JSON::ParserError => _e return nil end # If multiple triggers are defined, `schtasks` returns a list. # This merges that list with the latest item taking precedence. # This is the same behavior as `Get-ScheduledTask`. params = params.reduce(:merge) if params.is_a?(Array) @cache = { uri: params["URI"], state: params["State"], logon_mode: params["Logon Mode"], last_result: params["Last Result"], task_to_run: params["Task To Run"], run_as_user: params["Run As User"], scheduled_task_state: params["Scheduled Task State"], type: "windows-task", } end
last_result()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 57 def last_result info[:last_result] end
logon_mode()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 53 def logon_mode info[:logon_mode] end
run_as_user()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 65 def run_as_user info[:run_as_user] end
task_to_run()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 61 def task_to_run info[:task_to_run].to_s.strip end
to_s()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 108 def to_s "Windows Task '#{@taskuri}'" end
type()
click to toggle source
# File lib/inspec/resources/windows_task.rb, line 69 def type info[:type] unless info.nil? end