Class: Chef::Resource::PowershellScript

Inherits:
WindowsScript show all
Defined in:
lib/chef/resource/powershell_script.rb

Constant Summary

Constants inherited from Chef::Resource

FORBIDDEN_IVARS, HIDDEN_IVARS

Instance Attribute Summary

Attributes inherited from Execute

#is_guard_interpreter

Attributes inherited from Chef::Resource

#allowed_actions, #cookbook_name, #declared_type, #default_guard_interpreter, #elapsed_time, #enclosing_provider, #executed_by_runner, #logger, #params, #recipe_name, #resource_initializing, #run_context, #source_line, #updated

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from WindowsScript

#architecture

Methods included from Mixin::WindowsArchitectureHelper

#assert_valid_windows_architecture!, #disable_wow64_file_redirection, #forced_32bit_override_required?, #is_i386_process_on_x86_64_windows?, #node_supports_windows_architecture?, #node_windows_architecture, #restore_wow64_file_redirection, #valid_windows_architecture?, #with_os_architecture, #wow64_architecture_override_required?, #wow64_directory

Methods inherited from Script

#command

Methods inherited from Execute

#after_created, guard_inherited_attributes, #qualify_user, set_guard_inherited_attributes, #validate_identity_platform

Methods inherited from Chef::Resource

action, #action, #action=, action_class, #after_created, allowed_actions, allowed_actions=, #as_json, #before_notifications, chef_version_for_provides, #cookbook_version, #current_value, #current_value_does_not_exist!, #custom_exception_message, custom_resource?, #customize_exception, declare_action_class, #declared_key, default_action, default_action=, default_description, #defined_at, #delayed_action, #delayed_notifications, deprecated, description, #events, examples, from_hash, from_json, #guard_interpreter, #identity, identity_attr, identity_property, #ignore_failure, #immediate_notifications, inherited, #inspect, introduced, is_custom_resource!, json_create, load_current_value, #load_from, #lookup_provider_constant, #method_missing, #name, #node, #not_if, #notifies, #notifies_before, #notifies_delayed, #notifies_immediately, #only_if, preview_resource, #provider, #provider=, #provider_for_action, provides, provides?, remove_canonical_dsl, #resolve_notification_references, resource_for_node, resource_matching_short_name, #resource_name, resource_name, resource_name=, #retries, #retry_delay, #run_action, #sensitive, #should_skip?, skip_docs, sorted_descendants, #source_line_file, #source_line_number, state_attrs, #state_for_resource_reporter, #subscribes, #to_h, #to_json, #to_s, #to_text, unified_mode, #updated?, #updated_by_last_action, #updated_by_last_action?, use_automatic_resource_name, #validate_action, #validate_resource_spec!, #value_to_text

Methods included from Mixin::ConvertToClassName

#constantize, #convert_to_class_name, #convert_to_snake_case, #filename_to_qualified_string, #normalize_snake_case_name, #snake_case_basename

Methods included from Mixin::LazyModuleInclude

#descendants, #include, #included

Methods included from Mixin::ShellOut

apply_default_env, maybe_add_timeout, #shell_out, #shell_out!

Methods included from Mixin::PowershellOut

#powershell_out, #powershell_out!

Methods included from Mixin::PowershellExec

#powershell_exec

Methods included from DSL::Powershell

#ps_credential

Methods included from DSL::RegistryHelper

#registry_data_exists?, #registry_get_subkeys, #registry_get_values, #registry_has_subkeys?, #registry_key_exists?, #registry_value_exists?

Methods included from DSL::DataQuery

#data_bag, #data_bag_item, #search, #tagged?

Methods included from EncryptedDataBagItem::CheckEncrypted

#encrypted?

Methods included from DSL::PlatformIntrospection

#older_than_win_2012_or_8?, #platform?, #platform_family?, #value_for_platform, #value_for_platform_family

Methods included from Mixin::Provides

#provided_as, #provides, #provides?

Methods included from Mixin::DescendantsTracker

#descendants, descendants, #direct_descendants, direct_descendants, #find_descendants_by_name, find_descendants_by_name, #inherited, store_inherited

Methods included from Mixin::Deprecation

#deprecated_attr, #deprecated_attr_reader, #deprecated_attr_writer, #deprecated_ivar

Methods included from Mixin::Properties

#copy_properties_from, included, #property_description, #property_is_set?, #reset_property

Methods included from Mixin::ParamsValidate

#lazy, #set_or_return, #validate

Methods included from DSL::RebootPending

#reboot_pending?

Methods included from DSL::DeclareResource

#build_resource, #declare_resource, #delete_resource, #delete_resource!, #edit_resource, #edit_resource!, #find_resource, #find_resource!, #resources, #with_run_context

Constructor Details

#initialize(name, run_context = nil) ⇒ PowershellScript

Returns a new instance of PowershellScript


49
50
51
52
# File 'lib/chef/resource/powershell_script.rb', line 49

def initialize(name, run_context = nil)
  super(name, run_context, :powershell_script, "powershell.exe")
  @convert_boolean_return = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Chef::Resource

Class Method Details

.get_default_attributes(opts) ⇒ Object

Allow callers evaluating guards to request default attribute values. This is needed to allow convert_boolean_return to be true in guard context by default, and false by default otherwise. When this mode becomes the default for this resource, this method can be removed since guard context and recipe resource context will have the same behavior.


69
70
71
# File 'lib/chef/resource/powershell_script.rb', line 69

def self.get_default_attributes(opts)
  { convert_boolean_return: true }
end

Instance Method Details

#convert_boolean_return(arg = nil) ⇒ Object


54
55
56
57
58
59
60
# File 'lib/chef/resource/powershell_script.rb', line 54

def convert_boolean_return(arg = nil)
  set_or_return(
    :convert_boolean_return,
    arg,
    kind_of: [ FalseClass, TrueClass ]
  )
end

#default_flagsObject

Options that will be passed to Windows PowerShell command


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/chef/resource/powershell_script.rb', line 74

def default_flags
  return "" if Chef::Platform.windows_nano_server?

  # Execution policy 'Bypass' is preferable since it doesn't require
  # user input confirmation for files such as PowerShell modules
  # downloaded from the Internet. However, 'Bypass' is not supported
  # prior to PowerShell 3.0, so the fallback is 'Unrestricted'
  execution_policy = Chef::Platform.supports_powershell_execution_bypass?(run_context.node) ? "Bypass" : "Unrestricted"

  [
    "-NoLogo",
    "-NonInteractive",
    "-NoProfile",
    "-ExecutionPolicy #{execution_policy}",
    # PowerShell will hang if STDIN is redirected
    # http://connect.microsoft.com/PowerShell/feedback/details/572313/powershell-exe-can-hang-if-stdin-is-redirected
    "-InputFormat None",
  ].join(" ")
end