mirror of
				https://github.com/ansible-collections/community.general.git
				synced 2025-10-24 21:14:00 -07:00 
			
		
		
		
	win_scheduled_task_stat: add new module to get stat on scheduled tasks (#30602)
* win_scheduled_task_stat: add new module to get stat on scheduled tasks * fixed up linting errors and aliases file * I should learn how to spell * removing URI from test * added state information for the task * removed argument so task stays running
This commit is contained in:
		
					parent
					
						
							
								0e9ae5b8cc
							
						
					
				
			
			
				commit
				
					
						59187358ee
					
				
			
		
					 11 changed files with 808 additions and 238 deletions
				
			
		|  | @ -21,6 +21,13 @@ Ansible Changes By Release | ||||||
|   ansible_diff_mode, ansible_inventory_sources, ansible_limit, ansible_run_tags , ansible_forks and ansible_skip_tags |   ansible_diff_mode, ansible_inventory_sources, ansible_limit, ansible_run_tags , ansible_forks and ansible_skip_tags | ||||||
| * Updated the bundled copy of the six library to 1.11.0 | * Updated the bundled copy of the six library to 1.11.0 | ||||||
| 
 | 
 | ||||||
|  | ### New Modules | ||||||
|  | 
 | ||||||
|  | #### Windows | ||||||
|  | 
 | ||||||
|  |   * win_scheduled_task_stat | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| <a id="2.4"></a> | <a id="2.4"></a> | ||||||
| 
 | 
 | ||||||
| ## 2.4 "Dancing Days" - RELEASE CANDIDATE | ## 2.4 "Dancing Days" - RELEASE CANDIDATE | ||||||
|  |  | ||||||
|  | @ -547,7 +547,7 @@ Function Compare-Triggers($task_definition) { | ||||||
|     $map = @{ |     $map = @{ | ||||||
|         [TASK_TRIGGER_TYPE2]::TASK_TRIGGER_BOOT = @{ |         [TASK_TRIGGER_TYPE2]::TASK_TRIGGER_BOOT = @{ | ||||||
|             mandatory = @() |             mandatory = @() | ||||||
|             optional = @('enabled', 'end_boundary', 'execution_time_limit', 'start_boundary') |             optional = @('delay', 'enabled', 'end_boundary', 'execution_time_limit', 'start_boundary') | ||||||
|         } |         } | ||||||
|         [TASK_TRIGGER_TYPE2]::TASK_TRIGGER_DAILY = @{ |         [TASK_TRIGGER_TYPE2]::TASK_TRIGGER_DAILY = @{ | ||||||
|             mandatory = @('start_boundary') |             mandatory = @('start_boundary') | ||||||
|  |  | ||||||
|  | @ -127,8 +127,8 @@ options: | ||||||
|         description: |         description: | ||||||
|         - The time to delay the task from running once the trigger has been |         - The time to delay the task from running once the trigger has been | ||||||
|           fired. |           fired. | ||||||
|         - Optional when C(type) is C(event), C(logon), C(registration), |         - Optional when C(type) is C(boot), C(event), C(logon), | ||||||
|           C(session_state_change). |           C(registration), C(session_state_change). | ||||||
|         - Is in the ISO 8601 Duration format C(P[n]Y[n]M[n]DT[n]H[n]M[n]S). |         - Is in the ISO 8601 Duration format C(P[n]Y[n]M[n]DT[n]H[n]M[n]S). | ||||||
|       random_delay: |       random_delay: | ||||||
|         description: |         description: | ||||||
|  | @ -331,7 +331,7 @@ options: | ||||||
|       task after it expires. |       task after it expires. | ||||||
|     - A task expires after the end_boundary has been exceeded for all triggers |     - A task expires after the end_boundary has been exceeded for all triggers | ||||||
|       associated with the task. |       associated with the task. | ||||||
|     - This is in ISO 8601 DateTime format C(YYYY-MM-DDThh:mm:ss). |     - This is in the ISO 8601 Duration format C(P[n]Y[n]M[n]DT[n]H[n]M[n]S). | ||||||
|     version_added: '2.5' |     version_added: '2.5' | ||||||
|   disallow_start_if_on_batteries: |   disallow_start_if_on_batteries: | ||||||
|     description: |     description: | ||||||
|  | @ -348,14 +348,14 @@ options: | ||||||
|     description: |     description: | ||||||
|     - The amount of time allowed to complete the task. |     - The amount of time allowed to complete the task. | ||||||
|     - When not set, the time limit is infinite. |     - When not set, the time limit is infinite. | ||||||
|     - This is in ISO 8601 DateTime format C(YYYY-MM-DDThh:mm:ss). |     - This is in the ISO 8601 Duration format C(P[n]Y[n]M[n]DT[n]H[n]M[n]S). | ||||||
|     version_added: '2.5' |     version_added: '2.5' | ||||||
|   hidden: |   hidden: | ||||||
|     description: |     description: | ||||||
|     - Whether the task will be hidden in the UI. |     - Whether the task will be hidden in the UI. | ||||||
|     type: bool |     type: bool | ||||||
|     version_added: '2.5' |     version_added: '2.5' | ||||||
|   mutliple_instances: |   multiple_instances: | ||||||
|     description: |     description: | ||||||
|     - An integer that indicates the behaviour when starting a task that is |     - An integer that indicates the behaviour when starting a task that is | ||||||
|       already running. |       already running. | ||||||
|  | @ -367,7 +367,7 @@ options: | ||||||
|     - C(3) will stop other instances of the task and start the new one. |     - C(3) will stop other instances of the task and start the new one. | ||||||
|     choices: [ 0, 1, 2, 3 ] |     choices: [ 0, 1, 2, 3 ] | ||||||
|     version_added: '2.5' |     version_added: '2.5' | ||||||
|   priortiy: |   priority: | ||||||
|     description: |     description: | ||||||
|     - The priority level (0-10) of the task. |     - The priority level (0-10) of the task. | ||||||
|     - When creating a new task the default if C(7). |     - When creating a new task the default if C(7). | ||||||
|  | @ -385,7 +385,7 @@ options: | ||||||
|     - If this is set then C(restart_count) must also be set. |     - If this is set then C(restart_count) must also be set. | ||||||
|     - The maximum allowed time is 31 days. |     - The maximum allowed time is 31 days. | ||||||
|     - The minimum allowed time is 1 minute. |     - The minimum allowed time is 1 minute. | ||||||
|     - This is in ISO 8601 DateTime format C(YYYY-MM-DDThh:mm:ss). |     - This is in the ISO 8601 Duration format C(P[n]Y[n]M[n]DT[n]H[n]M[n]S). | ||||||
|     version_added: '2.5' |     version_added: '2.5' | ||||||
|   run_only_if_idle: |   run_only_if_idle: | ||||||
|     description: |     description: | ||||||
|  |  | ||||||
|  | @ -1,9 +1,14 @@ | ||||||
| #!powershell | #!powershell | ||||||
|  | 
 | ||||||
|  | # Copyright (c) 2017 Ansible Project | ||||||
|  | # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) | ||||||
|  | 
 | ||||||
|  | #Requires -Module Ansible.ModuleUtils.CamelConversion | ||||||
| #Requires -Module Ansible.ModuleUtils.Legacy | #Requires -Module Ansible.ModuleUtils.Legacy | ||||||
| #Requires -Module Ansible.ModuleUtils.SID | #Requires -Module Ansible.ModuleUtils.SID | ||||||
| 
 | 
 | ||||||
| $params = Parse-Args -arguments $args | $params = Parse-Args -arguments $args | ||||||
| $path = Get-AnsibleParam -obj $params -name "path" -type "str" -failifempty $true | $path = Get-AnsibleParam -obj $params -name "path" -type "str" -default "\" | ||||||
| $name = Get-AnsibleParam -obj $params -name "name" -type "str" | $name = Get-AnsibleParam -obj $params -name "name" -type "str" | ||||||
| 
 | 
 | ||||||
| $result = @{ | $result = @{ | ||||||
|  | @ -37,6 +42,15 @@ public enum TASK_RUN_LEVEL | ||||||
|     TASK_RUNLEVEL_HIGHEST  = 1 |     TASK_RUNLEVEL_HIGHEST  = 1 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | public enum TASK_STATE | ||||||
|  | { | ||||||
|  |     TASK_STATE_UNKNOWN   = 0, | ||||||
|  |     TASK_STATE_DISABLED  = 1, | ||||||
|  |     TASK_STATE_QUEUED    = 2, | ||||||
|  |     TASK_STATE_READY     = 3, | ||||||
|  |     TASK_STATE_RUNNING   = 4 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| public enum TASK_TRIGGER_TYPE2 | public enum TASK_TRIGGER_TYPE2 | ||||||
| { | { | ||||||
|     TASK_TRIGGER_EVENT                 = 0, |     TASK_TRIGGER_EVENT                 = 0, | ||||||
|  | @ -58,6 +72,14 @@ Function Get-PropertyValue($task_property, $com, $property) { | ||||||
| 
 | 
 | ||||||
|     if ($raw_value -eq $null) { |     if ($raw_value -eq $null) { | ||||||
|         return $null |         return $null | ||||||
|  |     } elseif ($raw_value.GetType().Name -eq "__ComObject") { | ||||||
|  |         $com_values = @{} | ||||||
|  |         $properties = Get-Member -InputObject $raw_value -MemberType Property | % { | ||||||
|  |             $com_value = Get-PropertyValue -task_property $property -com $raw_value -property $_.Name | ||||||
|  |             $com_values.$property = $com_value | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return ,$com_values | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     switch ($property) { |     switch ($property) { | ||||||
|  | @ -212,7 +234,11 @@ Function Get-PropertyValue($task_property, $com, $property) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| $service = New-Object -ComObject Schedule.Service | $service = New-Object -ComObject Schedule.Service | ||||||
| $service.Connect() | try { | ||||||
|  |     $service.Connect() | ||||||
|  | } catch { | ||||||
|  |     Fail-Json -obj $result -message "failed to connect to the task scheduler service: $($_.Exception.Message)" | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| try { | try { | ||||||
|     $task_folder = $service.GetFolder($path) |     $task_folder = $service.GetFolder($path) | ||||||
|  | @ -240,24 +266,36 @@ $result.folder_task_count = $folder_task_count | ||||||
| 
 | 
 | ||||||
| if ($name -ne $null) { | if ($name -ne $null) { | ||||||
|     if ($task -ne $null) { |     if ($task -ne $null) { | ||||||
|         $task_definition = $task.Definition |  | ||||||
|         $result.task_exists = $true |         $result.task_exists = $true | ||||||
|         $result.task = @{} |  | ||||||
| 
 | 
 | ||||||
|  |         # task state | ||||||
|  |         $result.state = @{ | ||||||
|  |             last_run_time = (Get-Date $task.LastRunTime -Format s) | ||||||
|  |             last_task_result = $task.LastTaskResult | ||||||
|  |             next_run_time = (Get-Date $task.NextRunTime -Format s) | ||||||
|  |             number_of_missed_runs = $task.NumberOfMissedRuns | ||||||
|  |             status = [Enum]::ToObject([TASK_STATE], $task.State).ToString() | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         # task definition | ||||||
|  |         $task_definition = $task.Definition | ||||||
|  |         $ignored_properties = @("XmlText") | ||||||
|         $properties = @("principal", "registration_info", "settings") |         $properties = @("principal", "registration_info", "settings") | ||||||
|         $collection_properties = @("actions", "triggers") |         $collection_properties = @("actions", "triggers") | ||||||
| 
 | 
 | ||||||
|         foreach ($property in $properties) { |         foreach ($property in $properties) { | ||||||
|             $property_name = $property -replace "_" |             $property_name = $property -replace "_" | ||||||
|             $result.task.$property = @{} |             $result.$property = @{} | ||||||
|             $values = $task_definition.$property_name |             $values = $task_definition.$property_name | ||||||
|             Get-Member -InputObject $values -MemberType Property | % { |             Get-Member -InputObject $values -MemberType Property | % { | ||||||
|                 $result.task.$property.$($_.Name) = (Get-PropertyValue -task_property $property -com $values -property $_.Name) |                 if ($_.Name -notin $ignored_properties) { | ||||||
|  |                     $result.$property.$($_.Name) = (Get-PropertyValue -task_property $property -com $values -property $_.Name) | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         foreach ($property in $collection_properties) { |         foreach ($property in $collection_properties) { | ||||||
|             $result.task.$property = @() |             $result.$property = @() | ||||||
|             $collection = $task_definition.$property |             $collection = $task_definition.$property | ||||||
|             $collection_count = $collection.Count |             $collection_count = $collection.Count | ||||||
|             for ($i = 1; $i -le $collection_count; $i++) { |             for ($i = 1; $i -le $collection_count; $i++) { | ||||||
|  | @ -265,9 +303,11 @@ if ($name -ne $null) { | ||||||
|                 $item_info = @{} |                 $item_info = @{} | ||||||
| 
 | 
 | ||||||
|                 Get-Member -InputObject $item -MemberType Property | % { |                 Get-Member -InputObject $item -MemberType Property | % { | ||||||
|  |                     if ($_.Name -notin $ignored_properties) { | ||||||
|                         $item_info.$($_.Name) = (Get-PropertyValue -task_property $property -com $item -property $_.Name) |                         $item_info.$($_.Name) = (Get-PropertyValue -task_property $property -com $item -property $_.Name) | ||||||
|                     } |                     } | ||||||
|                 $result.task.$property += $item_info |                 } | ||||||
|  |                 $result.$property += $item_info | ||||||
|             } |             } | ||||||
|         }     |         }     | ||||||
|     } else { |     } else { | ||||||
|  | @ -275,4 +315,6 @@ if ($name -ne $null) { | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | $result = Convert-DictToSnakeCase -dict $result | ||||||
|  | 
 | ||||||
| Exit-Json -obj $result | Exit-Json -obj $result | ||||||
							
								
								
									
										367
									
								
								lib/ansible/modules/windows/win_scheduled_task_stat.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										367
									
								
								lib/ansible/modules/windows/win_scheduled_task_stat.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,367 @@ | ||||||
|  | #!/usr/bin/python | ||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | 
 | ||||||
|  | # Copyright (c) 2017 Ansible Project | ||||||
|  | # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) | ||||||
|  | 
 | ||||||
|  | # this is a windows documentation stub.  actual code lives in the .ps1 | ||||||
|  | # file of the same name | ||||||
|  | 
 | ||||||
|  | ANSIBLE_METADATA = {'metadata_version': '1.1', | ||||||
|  |                     'status': ['preview'], | ||||||
|  |                     'supported_by': 'community'} | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DOCUMENTATION = r''' | ||||||
|  | --- | ||||||
|  | module: win_scheduled_task_stat | ||||||
|  | version_added: "2.5" | ||||||
|  | short_description: Returns information about a Windows Scheduled Task | ||||||
|  | description: | ||||||
|  | - Will return whether the folder and task exists. | ||||||
|  | - Returns the names of tasks in the folder specified. | ||||||
|  | - If C(name) is set and exists, will return information on the task itself. | ||||||
|  | - Use M(win_scheduled_task) to configure a scheduled task. | ||||||
|  | options: | ||||||
|  |   path: | ||||||
|  |     description: The folder path where the task lives. | ||||||
|  |     default: \ | ||||||
|  |   name: | ||||||
|  |     description: The name of the scheduled task to get information for. | ||||||
|  | author: | ||||||
|  | - Jordan Borean (@jborean93) | ||||||
|  | ''' | ||||||
|  | 
 | ||||||
|  | EXAMPLES = r''' | ||||||
|  | - name: get information about a folder | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: \folder name | ||||||
|  |   register: task_folder_stat | ||||||
|  | 
 | ||||||
|  | - name: get information about a task in the root folder | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     name: task name | ||||||
|  |   register: task_stat | ||||||
|  | 
 | ||||||
|  | - name: get information about a task in a custom folder | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: \folder name | ||||||
|  |     name: task name | ||||||
|  |   register: task_stat | ||||||
|  | ''' | ||||||
|  | 
 | ||||||
|  | RETURN = r''' | ||||||
|  | actions: | ||||||
|  |   description: A list of actions. | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: list | ||||||
|  |   sample: [ | ||||||
|  |       { | ||||||
|  |           "Arguments": "/c echo hi", | ||||||
|  |           "Id": null, | ||||||
|  |           "Path": "cmd.exe", | ||||||
|  |           "Type": "TASK_ACTION_EXEC", | ||||||
|  |           "WorkingDirectory": null | ||||||
|  |       } | ||||||
|  |   ] | ||||||
|  | folder_exists: | ||||||
|  |   description: Whether the folder set at path exists. | ||||||
|  |   returned: always | ||||||
|  |   type: boolean | ||||||
|  |   sample: True | ||||||
|  | folder_task_count: | ||||||
|  |   description: The number of tasks that exist in the folder. | ||||||
|  |   returned: always | ||||||
|  |   type: int | ||||||
|  |   sample: 2 | ||||||
|  | folder_task_names: | ||||||
|  |   description: A list of tasks that exist in the folder. | ||||||
|  |   returned: always | ||||||
|  |   type: list | ||||||
|  |   sample: [ 'Task 1', 'Task 2' ] | ||||||
|  | principal: | ||||||
|  |   description: Details on the principal configured to run the task. | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: complex | ||||||
|  |   contains: | ||||||
|  |     display_name: | ||||||
|  |       description: The name of the user/group that is displayed in the Task | ||||||
|  |         Scheduler UI. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: Administrator | ||||||
|  |     group_id: | ||||||
|  |       description: The group that will run the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: BUILTIN\Administrators | ||||||
|  |     id: | ||||||
|  |       description: The ID for the principal. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: Author | ||||||
|  |     logon_type: | ||||||
|  |       description: The logon method that the task will run with. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: TASK_LOGON_INTERACTIVE_TOKEN | ||||||
|  |     run_level: | ||||||
|  |       description: The level of user rights used to run the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: TASK_RUNLEVEL_LUA | ||||||
|  |     user_id: | ||||||
|  |       description: The user that will run the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: SERVER\Administrator | ||||||
|  | registration_info: | ||||||
|  |   description: Details on the task registration info. | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: complex | ||||||
|  |   contains: | ||||||
|  |     author: | ||||||
|  |       description: The author os the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: SERVER\Administrator | ||||||
|  |     date: | ||||||
|  |       description: The date when the task was register. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: '2017-01-01T10:00:00' | ||||||
|  |     description: | ||||||
|  |       description: The description of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: task description | ||||||
|  |     documentation: | ||||||
|  |       description: The documentation of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: task documentation | ||||||
|  |     security_descriptor: | ||||||
|  |       description: The security descriptor of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: security descriptor | ||||||
|  |     source: | ||||||
|  |       description: The source of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: source | ||||||
|  |     uri: | ||||||
|  |       description: The URI/path of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: \task\task name | ||||||
|  |     version: | ||||||
|  |       description: The version of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: 1.0 | ||||||
|  | settings: | ||||||
|  |   description: Details on the task settings. | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: complex | ||||||
|  |   contains: | ||||||
|  |     allow_demand_start: | ||||||
|  |       description: Whether the task can be started by using either the Run | ||||||
|  |         command of the Context menu. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     allow_hard_terminate: | ||||||
|  |       description: Whether the task can terminated by using TerminateProcess. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     compatibility: | ||||||
|  |       description: The compatibility level of the task | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 2 | ||||||
|  |     delete_expired_task_after: | ||||||
|  |       description: The amount of time the Task Scheduler will wait before | ||||||
|  |         deleting the task after it expires. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: PT10M | ||||||
|  |     disallow_start_if_on_batteries: | ||||||
|  |       description: Whether the task will not be started if the computer is | ||||||
|  |         running on battery power. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     disallow_start_on_remote_app_session: | ||||||
|  |       description: Whether the task will not be started when in a remote app | ||||||
|  |         session. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     enabled: | ||||||
|  |       description: Whether the task is enabled. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     execution_time_limit: | ||||||
|  |       description: The amount of time allowed to complete the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: PT72H | ||||||
|  |     hidden: | ||||||
|  |       description: Whether the task is hidden in the UI. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     idle_settings: | ||||||
|  |       description: The idle settings of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: dictionary | ||||||
|  |       sample: { | ||||||
|  |           "idle_settings": "PT1H" | ||||||
|  |       } | ||||||
|  |     maintenance_settings: | ||||||
|  |       description: The maintenance settings of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: null | ||||||
|  |     mulitple_instances: | ||||||
|  |       description: Indicates the behaviour when starting a task that is already | ||||||
|  |         running. | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 2 | ||||||
|  |     network_settings: | ||||||
|  |       description: The network settings of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: dictionary | ||||||
|  |       sample: { | ||||||
|  |           "network_settings": null | ||||||
|  |       } | ||||||
|  |     priority: | ||||||
|  |       description: The priority level of the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 7 | ||||||
|  |     restart_count: | ||||||
|  |       description: The number of times that the task will attempt to restart | ||||||
|  |         on failures. | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 0 | ||||||
|  |     restart_interval: | ||||||
|  |       description: How long the Task Scheduler will attempt to restart the | ||||||
|  |         task. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: PT15M | ||||||
|  |     run_only_id_idle: | ||||||
|  |       description: Whether the task will run if the computer is in an idle | ||||||
|  |         state. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     run_only_if_network_available: | ||||||
|  |       description: Whether the task will run only when a network is available. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     start_when_available: | ||||||
|  |       description: Whether the task can start at any time after its scheduled | ||||||
|  |         time has passed. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     stop_if_going_on_batteries: | ||||||
|  |       description: Whether the task will be stopped if the computer begins to | ||||||
|  |         run on battery power. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: True | ||||||
|  |     use_unified_scheduling_engine: | ||||||
|  |       description: Whether the task will use the unifed scheduling engine. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     volatile: | ||||||
|  |       description: Whether thet ask is volatile. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  |     wake_to_run: | ||||||
|  |       description: Whether the task will wake the computer when it is time to | ||||||
|  |         run the task. | ||||||
|  |       returned: '' | ||||||
|  |       type: bool | ||||||
|  |       sample: False | ||||||
|  | state: | ||||||
|  |   description: Details on the state of the task | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: complex | ||||||
|  |   contains: | ||||||
|  |     last_run_time: | ||||||
|  |       description: The time the registered task was last run. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: '2017-09-20T20:50:00' | ||||||
|  |     last_task_result: | ||||||
|  |       description: The results that were returned the last time the task was | ||||||
|  |         run. | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 267009 | ||||||
|  |     next_run_time: | ||||||
|  |       description: The time when the task is next scheduled to run. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: '2017-09-20T22:50:00' | ||||||
|  |     number_of_missed_runs: | ||||||
|  |       description: The number of times a task has missed a scheduled run. | ||||||
|  |       returned: '' | ||||||
|  |       type: int | ||||||
|  |       sample: 1 | ||||||
|  |     status: | ||||||
|  |       description: The status of the task, whether it is running, stopped, etc. | ||||||
|  |       returned: '' | ||||||
|  |       type: str | ||||||
|  |       sample: TASK_STATE_RUNNING | ||||||
|  | task_exists: | ||||||
|  |   description: Whether the task at the folder exists. | ||||||
|  |   returned: name is specified | ||||||
|  |   type: boolean | ||||||
|  |   sample: True | ||||||
|  | triggers: | ||||||
|  |   description: A list of triggers. | ||||||
|  |   returned: name is specified and task exists | ||||||
|  |   type: list | ||||||
|  |   sample: [ | ||||||
|  |       { | ||||||
|  |           "delay": "PT15M", | ||||||
|  |           "enabled": true, | ||||||
|  |           "end_boundary": null, | ||||||
|  |           "execution_time_limit": null, | ||||||
|  |           "id": null, | ||||||
|  |           "repetition": { | ||||||
|  |               "repetition": false | ||||||
|  |           }, | ||||||
|  |           "start_boundary": null, | ||||||
|  |           "type": "TASK_TRIGGER_BOOT" | ||||||
|  |       }, | ||||||
|  |       { | ||||||
|  |           "days_of_month": "5,15,30", | ||||||
|  |           "enabled": true, | ||||||
|  |           "end_boundary": null, | ||||||
|  |           "execution_time_limit": null, | ||||||
|  |           "id": null, | ||||||
|  |           "months_of_year": "june,december", | ||||||
|  |           "random_delay": null, | ||||||
|  |           "repetition": { | ||||||
|  |               "repetition": false | ||||||
|  |           }, | ||||||
|  |           "run_on_last_day_of_month": true, | ||||||
|  |           "start_boundary": "2017-09-20T03:44:38", | ||||||
|  |           "type": "TASK_TRIGGER_MONTHLY" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | ''' | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create task (check mode) | - name: get result of create task (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_task_result_check |   register: create_task_result_check | ||||||
|  | @ -33,7 +33,7 @@ | ||||||
|   register: create_task |   register: create_task | ||||||
| 
 | 
 | ||||||
| - name: get result of create task | - name: get result of create task | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_task_result |   register: create_task_result | ||||||
|  | @ -43,12 +43,12 @@ | ||||||
|     that: |     that: | ||||||
|     - create_task|changed |     - create_task|changed | ||||||
|     - create_task_result.task_exists == True |     - create_task_result.task_exists == True | ||||||
|     - create_task_result.task.actions|count == 1 |     - create_task_result.actions|count == 1 | ||||||
|     - create_task_result.task.actions[0].Path == "cmd.exe" |     - create_task_result.actions[0].path == "cmd.exe" | ||||||
|     - create_task_result.task.actions[0].Arguments == "/c echo hi" |     - create_task_result.actions[0].arguments == "/c echo hi" | ||||||
|     - create_task_result.task.actions[0].WorkingDirectory == None |     - create_task_result.actions[0].working_directory == None | ||||||
|     - create_task_result.task.registration_info.Description == "Original Description" |     - create_task_result.registration_info.description == "Original Description" | ||||||
|     - create_task_result.task.triggers|count == 0 |     - create_task_result.triggers|count == 0 | ||||||
| 
 | 
 | ||||||
| - name: create task (idempotent) | - name: create task (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -78,7 +78,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of change task (check mode) | - name: get result of change task (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: change_task_result_check |   register: change_task_result_check | ||||||
|  | @ -87,12 +87,12 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - change_task_check|changed |     - change_task_check|changed | ||||||
|     - change_task_result_check.task.actions|count == 1 |     - change_task_result_check.actions|count == 1 | ||||||
|     - change_task_result_check.task.registration_info.Author == None |     - change_task_result_check.registration_info.author == None | ||||||
|     - change_task_result_check.task.registration_info.Description == "Original Description" |     - change_task_result_check.registration_info.description == "Original Description" | ||||||
|     - change_task_result_check.task.settings.AllowDemandStart == true |     - change_task_result_check.settings.allow_demand_start == true | ||||||
|     - change_task_result_check.task.settings.RestartCount == 0 |     - change_task_result_check.settings.restart_count == 0 | ||||||
|     - change_task_result_check.task.settings.RestartInterval == None |     - change_task_result_check.settings.restart_interval == None | ||||||
| 
 | 
 | ||||||
| - name: change task | - name: change task | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -106,7 +106,7 @@ | ||||||
|   register: change_task |   register: change_task | ||||||
| 
 | 
 | ||||||
| - name: get result of change task | - name: get result of change task | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: change_task_result |   register: change_task_result | ||||||
|  | @ -115,12 +115,12 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - change_task|changed |     - change_task|changed | ||||||
|     - change_task_result.task.actions|count == 1 |     - change_task_result.actions|count == 1 | ||||||
|     - change_task_result.task.registration_info.Author == "Cow Inc." |     - change_task_result.registration_info.author == "Cow Inc." | ||||||
|     - change_task_result.task.registration_info.Description == "Test for Ansible" |     - change_task_result.registration_info.description == "Test for Ansible" | ||||||
|     - change_task_result.task.settings.AllowDemandStart == false |     - change_task_result.settings.allow_demand_start == false | ||||||
|     - change_task_result.task.settings.RestartCount == 5 |     - change_task_result.settings.restart_count == 5 | ||||||
|     - change_task_result.task.settings.RestartInterval == "PT1M" |     - change_task_result.settings.restart_interval == "PT1M" | ||||||
| 
 | 
 | ||||||
| - name: change task (idempotent) | - name: change task (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -152,7 +152,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of add task action (check mode) | - name: get result of add task action (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: add_task_action_result_check |   register: add_task_action_result_check | ||||||
|  | @ -161,10 +161,10 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - add_task_action_check|changed |     - add_task_action_check|changed | ||||||
|     - add_task_action_result_check.task.actions|count == 1 |     - add_task_action_result_check.actions|count == 1 | ||||||
|     - add_task_action_result_check.task.actions[0].Path == "cmd.exe" |     - add_task_action_result_check.actions[0].path == "cmd.exe" | ||||||
|     - add_task_action_result_check.task.actions[0].Arguments == "/c echo hi" |     - add_task_action_result_check.actions[0].arguments == "/c echo hi" | ||||||
|     - add_task_action_result_check.task.actions[0].WorkingDirectory == None |     - add_task_action_result_check.actions[0].working_directory == None | ||||||
| 
 | 
 | ||||||
| - name: add task action | - name: add task action | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -179,7 +179,7 @@ | ||||||
|   register: add_task_action |   register: add_task_action | ||||||
| 
 | 
 | ||||||
| - name: get result of add task action | - name: get result of add task action | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: add_task_action_result |   register: add_task_action_result | ||||||
|  | @ -188,13 +188,13 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - add_task_action|changed |     - add_task_action|changed | ||||||
|     - add_task_action_result.task.actions|count == 2 |     - add_task_action_result.actions|count == 2 | ||||||
|     - add_task_action_result.task.actions[0].Path == "cmd.exe" |     - add_task_action_result.actions[0].path == "cmd.exe" | ||||||
|     - add_task_action_result.task.actions[0].Arguments == "/c echo hi" |     - add_task_action_result.actions[0].arguments == "/c echo hi" | ||||||
|     - add_task_action_result.task.actions[0].WorkingDirectory == None |     - add_task_action_result.actions[0].working_directory == None | ||||||
|     - add_task_action_result.task.actions[1].Path == "powershell.exe" |     - add_task_action_result.actions[1].path == "powershell.exe" | ||||||
|     - add_task_action_result.task.actions[1].Arguments == "-File C:\\ansible\\script.ps1" |     - add_task_action_result.actions[1].arguments == "-File C:\\ansible\\script.ps1" | ||||||
|     - add_task_action_result.task.actions[1].WorkingDirectory == "C:\\ansible" |     - add_task_action_result.actions[1].working_directory == "C:\\ansible" | ||||||
| 
 | 
 | ||||||
| - name: add task action (idempotent) | - name: add task action (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -225,7 +225,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of remove task action (check mode) | - name: get result of remove task action (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_task_action_result_check |   register: remove_task_action_result_check | ||||||
|  | @ -234,13 +234,13 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - remove_task_action_check|changed |     - remove_task_action_check|changed | ||||||
|     - remove_task_action_result_check.task.actions|count == 2 |     - remove_task_action_result_check.actions|count == 2 | ||||||
|     - remove_task_action_result_check.task.actions[0].Path == "cmd.exe" |     - remove_task_action_result_check.actions[0].path == "cmd.exe" | ||||||
|     - remove_task_action_result_check.task.actions[0].Arguments == "/c echo hi" |     - remove_task_action_result_check.actions[0].arguments == "/c echo hi" | ||||||
|     - remove_task_action_result_check.task.actions[0].WorkingDirectory == None |     - remove_task_action_result_check.actions[0].working_directory == None | ||||||
|     - remove_task_action_result_check.task.actions[1].Path == "powershell.exe" |     - remove_task_action_result_check.actions[1].path == "powershell.exe" | ||||||
|     - remove_task_action_result_check.task.actions[1].Arguments == "-File C:\\ansible\\script.ps1" |     - remove_task_action_result_check.actions[1].arguments == "-File C:\\ansible\\script.ps1" | ||||||
|     - remove_task_action_result_check.task.actions[1].WorkingDirectory == "C:\\ansible" |     - remove_task_action_result_check.actions[1].working_directory == "C:\\ansible" | ||||||
| 
 | 
 | ||||||
| - name: remove task action | - name: remove task action | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -253,7 +253,7 @@ | ||||||
|   register: remove_task_action |   register: remove_task_action | ||||||
| 
 | 
 | ||||||
| - name: get result of remove task action | - name: get result of remove task action | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_task_action_result |   register: remove_task_action_result | ||||||
|  | @ -262,10 +262,10 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - remove_task_action|changed |     - remove_task_action|changed | ||||||
|     - remove_task_action_result.task.actions|count == 1 |     - remove_task_action_result.actions|count == 1 | ||||||
|     - remove_task_action_result.task.actions[0].Path == "powershell.exe" |     - remove_task_action_result.actions[0].path == "powershell.exe" | ||||||
|     - remove_task_action_result.task.actions[0].Arguments == "-File C:\\ansible\\script.ps1" |     - remove_task_action_result.actions[0].arguments == "-File C:\\ansible\\script.ps1" | ||||||
|     - remove_task_action_result.task.actions[0].WorkingDirectory == "C:\\ansible" |     - remove_task_action_result.actions[0].working_directory == "C:\\ansible" | ||||||
| 
 | 
 | ||||||
| - name: remove task action (idempontent) | - name: remove task action (idempontent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -290,7 +290,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of remove task (check mode) | - name: get result of remove task (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_task_result_check |   register: remove_task_result_check | ||||||
|  | @ -308,7 +308,7 @@ | ||||||
|   register: remove_task |   register: remove_task | ||||||
| 
 | 
 | ||||||
| - name: get result of remove task | - name: get result of remove task | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_task_result |   register: remove_task_result | ||||||
|  | @ -340,7 +340,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create sole task in folder (check mode) | - name: get result of create sole task in folder (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: '{{test_scheduled_task_path}}' |     path: '{{test_scheduled_task_path}}' | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_sole_task_result_check |   register: create_sole_task_result_check | ||||||
|  | @ -361,7 +361,7 @@ | ||||||
|   register: create_sole_task |   register: create_sole_task | ||||||
| 
 | 
 | ||||||
| - name: get result of create sole task in folder | - name: get result of create sole task in folder | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: '{{test_scheduled_task_path}}' |     path: '{{test_scheduled_task_path}}' | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_sole_task_result |   register: create_sole_task_result | ||||||
|  | @ -395,7 +395,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of remove sole task in folder (check mode) | - name: get result of remove sole task in folder (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: '{{test_scheduled_task_path}}' |     path: '{{test_scheduled_task_path}}' | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_sole_task_result_check |   register: remove_sole_task_result_check | ||||||
|  | @ -415,7 +415,7 @@ | ||||||
|   register: remove_sole_task |   register: remove_sole_task | ||||||
| 
 | 
 | ||||||
| - name: get result of remove sole task in folder | - name: get result of remove sole task in folder | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: '{{test_scheduled_task_path}}' |     path: '{{test_scheduled_task_path}}' | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_sole_task_result |   register: remove_sole_task_result | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with password principal (check mode) | - name: get result of task with password principal (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_password_result_check |   register: task_with_password_result_check | ||||||
|  | @ -45,7 +45,7 @@ | ||||||
|   register: task_with_password |   register: task_with_password | ||||||
| 
 | 
 | ||||||
| - name: get result of task with password principal | - name: get result of task with password principal | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_password_result |   register: task_with_password_result | ||||||
|  | @ -55,10 +55,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_password|changed |     - task_with_password|changed | ||||||
|     - task_with_password_result.task_exists == True |     - task_with_password_result.task_exists == True | ||||||
|     - task_with_password_result.task.principal.GroupId == None |     - task_with_password_result.principal.group_id == None | ||||||
|     - task_with_password_result.task.principal.LogonType == "TASK_LOGON_PASSWORD" |     - task_with_password_result.principal.logon_type == "TASK_LOGON_PASSWORD" | ||||||
|     - task_with_password_result.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_password_result.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_password_result.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_password_result.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with password principal (idempotent) | - name: task with password principal (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -108,7 +108,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with s4u principal (check mode) | - name: get result of task with s4u principal (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_s4u_result_check |   register: task_with_s4u_result_check | ||||||
|  | @ -118,10 +118,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_s4u_check|changed |     - task_with_s4u_check|changed | ||||||
|     - task_with_s4u_result_check.task_exists == True |     - task_with_s4u_result_check.task_exists == True | ||||||
|     - task_with_s4u_result_check.task.principal.GroupId == None |     - task_with_s4u_result_check.principal.group_id == None | ||||||
|     - task_with_s4u_result_check.task.principal.LogonType == "TASK_LOGON_PASSWORD" |     - task_with_s4u_result_check.principal.logon_type == "TASK_LOGON_PASSWORD" | ||||||
|     - task_with_s4u_result_check.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_s4u_result_check.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_s4u_result_check.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_s4u_result_check.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with s4u principal | - name: task with s4u principal | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -136,7 +136,7 @@ | ||||||
|   register: task_with_s4u |   register: task_with_s4u | ||||||
| 
 | 
 | ||||||
| - name: get result of task with s4u principal | - name: get result of task with s4u principal | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_s4u_result |   register: task_with_s4u_result | ||||||
|  | @ -146,10 +146,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_s4u|changed |     - task_with_s4u|changed | ||||||
|     - task_with_s4u_result.task_exists == True |     - task_with_s4u_result.task_exists == True | ||||||
|     - task_with_s4u_result.task.principal.GroupId == None |     - task_with_s4u_result.principal.group_id == None | ||||||
|     - task_with_s4u_result.task.principal.LogonType == "TASK_LOGON_S4U" |     - task_with_s4u_result.principal.logon_type == "TASK_LOGON_S4U" | ||||||
|     - task_with_s4u_result.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_s4u_result.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_s4u_result.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_s4u_result.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with s4u principal (idempotent) | - name: task with s4u principal (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -180,7 +180,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with interactive principal (check mode) | - name: get result of task with interactive principal (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_interactive_result_check |   register: task_with_interactive_result_check | ||||||
|  | @ -190,10 +190,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_interactive_check|changed |     - task_with_interactive_check|changed | ||||||
|     - task_with_interactive_result_check.task_exists == True |     - task_with_interactive_result_check.task_exists == True | ||||||
|     - task_with_interactive_result_check.task.principal.GroupId == None |     - task_with_interactive_result_check.principal.group_id == None | ||||||
|     - task_with_interactive_result_check.task.principal.LogonType == "TASK_LOGON_S4U" |     - task_with_interactive_result_check.principal.logon_type == "TASK_LOGON_S4U" | ||||||
|     - task_with_interactive_result_check.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_interactive_result_check.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_interactive_result_check.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_interactive_result_check.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with interactive principal | - name: task with interactive principal | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -206,7 +206,7 @@ | ||||||
|   register: task_with_interactive |   register: task_with_interactive | ||||||
| 
 | 
 | ||||||
| - name: get result of task with interactive principal | - name: get result of task with interactive principal | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_interactive_result |   register: task_with_interactive_result | ||||||
|  | @ -216,10 +216,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_interactive|changed |     - task_with_interactive|changed | ||||||
|     - task_with_interactive_result.task_exists == True |     - task_with_interactive_result.task_exists == True | ||||||
|     - task_with_interactive_result.task.principal.GroupId == None |     - task_with_interactive_result.principal.group_id == None | ||||||
|     - task_with_interactive_result.task.principal.LogonType == "TASK_LOGON_INTERACTIVE_TOKEN" |     - task_with_interactive_result.principal.logon_type == "TASK_LOGON_INTERACTIVE_TOKEN" | ||||||
|     - task_with_interactive_result.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_interactive_result.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_interactive_result.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_interactive_result.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with interactive principal (idempotent) | - name: task with interactive principal (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -248,7 +248,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with group principal (check mode) | - name: get result of task with group principal (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_group_result_check |   register: task_with_group_result_check | ||||||
|  | @ -258,10 +258,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_group_check|changed |     - task_with_group_check|changed | ||||||
|     - task_with_group_result_check.task_exists == True |     - task_with_group_result_check.task_exists == True | ||||||
|     - task_with_group_result_check.task.principal.GroupId == None |     - task_with_group_result_check.principal.group_id == None | ||||||
|     - task_with_group_result_check.task.principal.LogonType == "TASK_LOGON_INTERACTIVE_TOKEN" |     - task_with_group_result_check.principal.logon_type == "TASK_LOGON_INTERACTIVE_TOKEN" | ||||||
|     - task_with_group_result_check.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_group_result_check.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_group_result_check.task.principal.UserId.endswith(test_scheduled_task_user) |     - task_with_group_result_check.principal.user_id.endswith(test_scheduled_task_user) | ||||||
| 
 | 
 | ||||||
| - name: task with group principal | - name: task with group principal | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -274,7 +274,7 @@ | ||||||
|   register: task_with_group |   register: task_with_group | ||||||
| 
 | 
 | ||||||
| - name: get result of task with group principal | - name: get result of task with group principal | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_group_result |   register: task_with_group_result | ||||||
|  | @ -284,10 +284,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_group|changed |     - task_with_group|changed | ||||||
|     - task_with_group_result.task_exists == True |     - task_with_group_result.task_exists == True | ||||||
|     - task_with_group_result.task.principal.GroupId == "BUILTIN\\Administrators" |     - task_with_group_result.principal.group_id == "BUILTIN\\Administrators" | ||||||
|     - task_with_group_result.task.principal.LogonType == "TASK_LOGON_GROUP" |     - task_with_group_result.principal.logon_type == "TASK_LOGON_GROUP" | ||||||
|     - task_with_group_result.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_group_result.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_group_result.task.principal.UserId == None |     - task_with_group_result.principal.user_id == None | ||||||
| 
 | 
 | ||||||
| - name: task with group principal (idempotent) | - name: task with group principal (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -316,7 +316,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with service account principal (check mode) | - name: get result of task with service account principal (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_service_result_check |   register: task_with_service_result_check | ||||||
|  | @ -326,10 +326,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_service_check|changed |     - task_with_service_check|changed | ||||||
|     - task_with_service_result_check.task_exists == True |     - task_with_service_result_check.task_exists == True | ||||||
|     - task_with_service_result_check.task.principal.GroupId == "BUILTIN\\Administrators" |     - task_with_service_result_check.principal.group_id == "BUILTIN\\Administrators" | ||||||
|     - task_with_service_result_check.task.principal.LogonType == "TASK_LOGON_GROUP" |     - task_with_service_result_check.principal.logon_type == "TASK_LOGON_GROUP" | ||||||
|     - task_with_service_result_check.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_service_result_check.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_service_result_check.task.principal.UserId == None |     - task_with_service_result_check.principal.user_id == None | ||||||
| 
 | 
 | ||||||
| - name: task with service account principal | - name: task with service account principal | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -342,7 +342,7 @@ | ||||||
|   register: task_with_service |   register: task_with_service | ||||||
| 
 | 
 | ||||||
| - name: get result of task with service account principal | - name: get result of task with service account principal | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_service_result |   register: task_with_service_result | ||||||
|  | @ -352,10 +352,10 @@ | ||||||
|     that: |     that: | ||||||
|     - task_with_service|changed |     - task_with_service|changed | ||||||
|     - task_with_service_result.task_exists == True |     - task_with_service_result.task_exists == True | ||||||
|     - task_with_service_result.task.principal.GroupId == None |     - task_with_service_result.principal.group_id == None | ||||||
|     - task_with_service_result.task.principal.LogonType == "TASK_LOGON_SERVICE_ACCOUNT" |     - task_with_service_result.principal.logon_type == "TASK_LOGON_SERVICE_ACCOUNT" | ||||||
|     - task_with_service_result.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_service_result.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|     - task_with_service_result.task.principal.UserId == "NT AUTHORITY\\SYSTEM" |     - task_with_service_result.principal.user_id == "NT AUTHORITY\\SYSTEM" | ||||||
| 
 | 
 | ||||||
| - name: task with service account principal (idempotent) | - name: task with service account principal (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -385,7 +385,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of task with highest privilege (check mode) | - name: get result of task with highest privilege (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_highest_privilege_result_check |   register: task_with_highest_privilege_result_check | ||||||
|  | @ -394,7 +394,7 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - task_with_highest_privilege_check|changed |     - task_with_highest_privilege_check|changed | ||||||
|     - task_with_highest_privilege_result_check.task.principal.RunLevel == "TASK_RUNLEVEL_LUA" |     - task_with_highest_privilege_result_check.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
| 
 | 
 | ||||||
| - name: task with highest privilege | - name: task with highest privilege | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -408,7 +408,7 @@ | ||||||
|   register: task_with_highest_privilege |   register: task_with_highest_privilege | ||||||
| 
 | 
 | ||||||
| - name: get result of task with highest privilege | - name: get result of task with highest privilege | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: task_with_highest_privilege_result |   register: task_with_highest_privilege_result | ||||||
|  | @ -417,7 +417,7 @@ | ||||||
|   assert: |   assert: | ||||||
|     that: |     that: | ||||||
|     - task_with_highest_privilege|changed |     - task_with_highest_privilege|changed | ||||||
|     - task_with_highest_privilege_result.task.principal.RunLevel == "TASK_RUNLEVEL_HIGHEST" |     - task_with_highest_privilege_result.principal.run_level == "TASK_RUNLEVEL_HIGHEST" | ||||||
| 
 | 
 | ||||||
| - name: task with highest privilege (idempotent) | - name: task with highest privilege (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create boot trigger (check mode) | - name: get result of create boot trigger (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_boot_result_check |   register: trigger_boot_result_check | ||||||
|  | @ -33,7 +33,7 @@ | ||||||
|   register: trigger_boot |   register: trigger_boot | ||||||
| 
 | 
 | ||||||
| - name: get result of create boot trigger | - name: get result of create boot trigger | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_boot_result |   register: trigger_boot_result | ||||||
|  | @ -43,11 +43,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_boot|changed |     - trigger_boot|changed | ||||||
|     - trigger_boot_result.task_exists == True |     - trigger_boot_result.task_exists == True | ||||||
|     - trigger_boot_result.task.triggers|count == 1 |     - trigger_boot_result.triggers|count == 1 | ||||||
|     - trigger_boot_result.task.triggers[0].Type == "TASK_TRIGGER_BOOT" |     - trigger_boot_result.triggers[0].type == "TASK_TRIGGER_BOOT" | ||||||
|     - trigger_boot_result.task.triggers[0].Enabled == True |     - trigger_boot_result.triggers[0].enabled == True | ||||||
|     - trigger_boot_result.task.triggers[0].StartBoundary == None |     - trigger_boot_result.triggers[0].start_boundary == None | ||||||
|     - trigger_boot_result.task.triggers[0].EndBoundary == None |     - trigger_boot_result.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create boot trigger (idempotent) | - name: create boot trigger (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -77,7 +77,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create daily trigger (check mode) | - name: get result of create daily trigger (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_daily_result_check |   register: trigger_daily_result_check | ||||||
|  | @ -87,11 +87,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_daily_check|changed |     - trigger_daily_check|changed | ||||||
|     - trigger_daily_result_check.task_exists == True |     - trigger_daily_result_check.task_exists == True | ||||||
|     - trigger_daily_result_check.task.triggers|count == 1 |     - trigger_daily_result_check.triggers|count == 1 | ||||||
|     - trigger_daily_result_check.task.triggers[0].Type == "TASK_TRIGGER_BOOT" |     - trigger_daily_result_check.triggers[0].type == "TASK_TRIGGER_BOOT" | ||||||
|     - trigger_daily_result_check.task.triggers[0].Enabled == True |     - trigger_daily_result_check.triggers[0].enabled == True | ||||||
|     - trigger_daily_result_check.task.triggers[0].StartBoundary == None |     - trigger_daily_result_check.triggers[0].start_boundary == None | ||||||
|     - trigger_daily_result_check.task.triggers[0].EndBoundary == None |     - trigger_daily_result_check.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create daily trigger | - name: create daily trigger | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -105,7 +105,7 @@ | ||||||
|   register: trigger_daily |   register: trigger_daily | ||||||
| 
 | 
 | ||||||
| - name: get result of create daily trigger | - name: get result of create daily trigger | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_daily_result |   register: trigger_daily_result | ||||||
|  | @ -115,11 +115,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_daily|changed |     - trigger_daily|changed | ||||||
|     - trigger_daily_result.task_exists == True |     - trigger_daily_result.task_exists == True | ||||||
|     - trigger_daily_result.task.triggers|count == 1 |     - trigger_daily_result.triggers|count == 1 | ||||||
|     - trigger_daily_result.task.triggers[0].Type == "TASK_TRIGGER_DAILY" |     - trigger_daily_result.triggers[0].type == "TASK_TRIGGER_DAILY" | ||||||
|     - trigger_daily_result.task.triggers[0].Enabled == True |     - trigger_daily_result.triggers[0].enabled == True | ||||||
|     - trigger_daily_result.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - trigger_daily_result.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - trigger_daily_result.task.triggers[0].EndBoundary == None |     - trigger_daily_result.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create daily trigger (idempotent) | - name: create daily trigger (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -149,7 +149,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create logon trigger (check mode) | - name: get result of create logon trigger (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_logon_result_check |   register: trigger_logon_result_check | ||||||
|  | @ -159,11 +159,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_logon_check|changed |     - trigger_logon_check|changed | ||||||
|     - trigger_logon_result_check.task_exists == True |     - trigger_logon_result_check.task_exists == True | ||||||
|     - trigger_logon_result_check.task.triggers|count == 1 |     - trigger_logon_result_check.triggers|count == 1 | ||||||
|     - trigger_logon_result_check.task.triggers[0].Type == "TASK_TRIGGER_DAILY" |     - trigger_logon_result_check.triggers[0].type == "TASK_TRIGGER_DAILY" | ||||||
|     - trigger_logon_result_check.task.triggers[0].Enabled == True |     - trigger_logon_result_check.triggers[0].enabled == True | ||||||
|     - trigger_logon_result_check.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - trigger_logon_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - trigger_logon_result_check.task.triggers[0].EndBoundary == None |     - trigger_logon_result_check.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create logon trigger | - name: create logon trigger | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -176,7 +176,7 @@ | ||||||
|   register: trigger_logon |   register: trigger_logon | ||||||
| 
 | 
 | ||||||
| - name: get result of create logon trigger | - name: get result of create logon trigger | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_logon_result |   register: trigger_logon_result | ||||||
|  | @ -186,11 +186,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_logon|changed |     - trigger_logon|changed | ||||||
|     - trigger_logon_result.task_exists == True |     - trigger_logon_result.task_exists == True | ||||||
|     - trigger_logon_result.task.triggers|count == 1 |     - trigger_logon_result.triggers|count == 1 | ||||||
|     - trigger_logon_result.task.triggers[0].Type == "TASK_TRIGGER_LOGON" |     - trigger_logon_result.triggers[0].type == "TASK_TRIGGER_LOGON" | ||||||
|     - trigger_logon_result.task.triggers[0].Enabled == True |     - trigger_logon_result.triggers[0].enabled == True | ||||||
|     - trigger_logon_result.task.triggers[0].StartBoundary == None |     - trigger_logon_result.triggers[0].start_boundary == None | ||||||
|     - trigger_logon_result.task.triggers[0].EndBoundary == None |     - trigger_logon_result.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create logon trigger (idempotent) | - name: create logon trigger (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -222,7 +222,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create monthly dow trigger (check mode) | - name: get result of create monthly dow trigger (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_monthlydow_result_check |   register: trigger_monthlydow_result_check | ||||||
|  | @ -232,11 +232,11 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_monthlydow_check|changed |     - trigger_monthlydow_check|changed | ||||||
|     - trigger_monthlydow_result_check.task_exists == True |     - trigger_monthlydow_result_check.task_exists == True | ||||||
|     - trigger_monthlydow_result_check.task.triggers|count == 1 |     - trigger_monthlydow_result_check.triggers|count == 1 | ||||||
|     - trigger_monthlydow_result_check.task.triggers[0].Type == "TASK_TRIGGER_LOGON" |     - trigger_monthlydow_result_check.triggers[0].type == "TASK_TRIGGER_LOGON" | ||||||
|     - trigger_monthlydow_result_check.task.triggers[0].Enabled == True |     - trigger_monthlydow_result_check.triggers[0].enabled == True | ||||||
|     - trigger_monthlydow_result_check.task.triggers[0].StartBoundary == None |     - trigger_monthlydow_result_check.triggers[0].start_boundary == None | ||||||
|     - trigger_monthlydow_result_check.task.triggers[0].EndBoundary == None |     - trigger_monthlydow_result_check.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: create monthly dow trigger | - name: create monthly dow trigger | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -252,7 +252,7 @@ | ||||||
|   register: trigger_monthlydow |   register: trigger_monthlydow | ||||||
| 
 | 
 | ||||||
| - name: get result of create monthly dow trigger | - name: get result of create monthly dow trigger | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: trigger_monthlydow_result |   register: trigger_monthlydow_result | ||||||
|  | @ -262,13 +262,13 @@ | ||||||
|     that: |     that: | ||||||
|     - trigger_monthlydow|changed |     - trigger_monthlydow|changed | ||||||
|     - trigger_monthlydow_result.task_exists == True |     - trigger_monthlydow_result.task_exists == True | ||||||
|     - trigger_monthlydow_result.task.triggers|count == 1 |     - trigger_monthlydow_result.triggers|count == 1 | ||||||
|     - trigger_monthlydow_result.task.triggers[0].Type == "TASK_TRIGGER_MONTHLYDOW" |     - trigger_monthlydow_result.triggers[0].type == "TASK_TRIGGER_MONTHLYDOW" | ||||||
|     - trigger_monthlydow_result.task.triggers[0].Enabled == True |     - trigger_monthlydow_result.triggers[0].enabled == True | ||||||
|     - trigger_monthlydow_result.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - trigger_monthlydow_result.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - trigger_monthlydow_result.task.triggers[0].EndBoundary == None |     - trigger_monthlydow_result.triggers[0].end_boundary == None | ||||||
|     - trigger_monthlydow_result.task.triggers[0].WeeksOfMonth == "1,2" |     - trigger_monthlydow_result.triggers[0].weeks_of_month == "1,2" | ||||||
|     - trigger_monthlydow_result.task.triggers[0].DaysOfWeek == "monday,wednesday" |     - trigger_monthlydow_result.triggers[0].days_of_week == "monday,wednesday" | ||||||
| 
 | 
 | ||||||
| - name: create monthly dow trigger (idempotent) | - name: create monthly dow trigger (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -310,7 +310,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of create task with multiple triggers (check mode) | - name: get result of create task with multiple triggers (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_multiple_triggers_result_check |   register: create_multiple_triggers_result_check | ||||||
|  | @ -320,13 +320,13 @@ | ||||||
|     that: |     that: | ||||||
|     - create_multiple_triggers_check|changed |     - create_multiple_triggers_check|changed | ||||||
|     - create_multiple_triggers_result_check.task_exists == True |     - create_multiple_triggers_result_check.task_exists == True | ||||||
|     - create_multiple_triggers_result_check.task.triggers|count == 1 |     - create_multiple_triggers_result_check.triggers|count == 1 | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].Type == "TASK_TRIGGER_MONTHLYDOW" |     - create_multiple_triggers_result_check.triggers[0].type == "TASK_TRIGGER_MONTHLYDOW" | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].Enabled == True |     - create_multiple_triggers_result_check.triggers[0].enabled == True | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - create_multiple_triggers_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].EndBoundary == None |     - create_multiple_triggers_result_check.triggers[0].end_boundary == None | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].WeeksOfMonth == "1,2" |     - create_multiple_triggers_result_check.triggers[0].weeks_of_month == "1,2" | ||||||
|     - create_multiple_triggers_result_check.task.triggers[0].DaysOfWeek == "monday,wednesday" |     - create_multiple_triggers_result_check.triggers[0].days_of_week == "monday,wednesday" | ||||||
| 
 | 
 | ||||||
| - name: create task with multiple triggers | - name: create task with multiple triggers | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -349,7 +349,7 @@ | ||||||
|   register: create_multiple_triggers |   register: create_multiple_triggers | ||||||
| 
 | 
 | ||||||
| - name: get result of create task with multiple triggers | - name: get result of create task with multiple triggers | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: create_multiple_triggers_result |   register: create_multiple_triggers_result | ||||||
|  | @ -359,19 +359,19 @@ | ||||||
|     that: |     that: | ||||||
|     - create_multiple_triggers|changed |     - create_multiple_triggers|changed | ||||||
|     - create_multiple_triggers_result.task_exists == True |     - create_multiple_triggers_result.task_exists == True | ||||||
|     - create_multiple_triggers_result.task.triggers|count == 2 |     - create_multiple_triggers_result.triggers|count == 2 | ||||||
|     - create_multiple_triggers_result.task.triggers[0].Type == "TASK_TRIGGER_MONTHLY" |     - create_multiple_triggers_result.triggers[0].type == "TASK_TRIGGER_MONTHLY" | ||||||
|     - create_multiple_triggers_result.task.triggers[0].Enabled == True |     - create_multiple_triggers_result.triggers[0].enabled == True | ||||||
|     - create_multiple_triggers_result.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - create_multiple_triggers_result.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - create_multiple_triggers_result.task.triggers[0].EndBoundary == None |     - create_multiple_triggers_result.triggers[0].end_boundary == None | ||||||
|     - create_multiple_triggers_result.task.triggers[0].DaysOfMonth == "1,5,10,15,20,25,30" |     - create_multiple_triggers_result.triggers[0].days_of_month == "1,5,10,15,20,25,30" | ||||||
|     - create_multiple_triggers_result.task.triggers[0].MonthsOfYear == "march,may,july" |     - create_multiple_triggers_result.triggers[0].months_of_year == "march,may,july" | ||||||
|     - create_multiple_triggers_result.task.triggers[0].RunOnLastDayOfMonth == True |     - create_multiple_triggers_result.triggers[0].run_on_last_day_of_month == True | ||||||
|     - create_multiple_triggers_result.task.triggers[1].Type == "TASK_TRIGGER_TIME" |     - create_multiple_triggers_result.triggers[1].type == "TASK_TRIGGER_TIME" | ||||||
|     - create_multiple_triggers_result.task.triggers[1].Enabled == True |     - create_multiple_triggers_result.triggers[1].enabled == True | ||||||
|     - create_multiple_triggers_result.task.triggers[1].StartBoundary == "2000-01-01T00:00:01" |     - create_multiple_triggers_result.triggers[1].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - create_multiple_triggers_result.task.triggers[1].EndBoundary == None |     - create_multiple_triggers_result.triggers[1].end_boundary == None | ||||||
|     - create_multiple_triggers_result.task.triggers[1].RandomDelay == "PT10M5S" |     - create_multiple_triggers_result.triggers[1].random_delay == "PT10M5S" | ||||||
| 
 | 
 | ||||||
| - name: create task with multiple triggers (idempotent) | - name: create task with multiple triggers (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -414,7 +414,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of change task with multiple triggers (check mode) | - name: get result of change task with multiple triggers (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: change_multiple_triggers_result_check |   register: change_multiple_triggers_result_check | ||||||
|  | @ -424,19 +424,19 @@ | ||||||
|     that: |     that: | ||||||
|     - change_multiple_triggers_check|changed |     - change_multiple_triggers_check|changed | ||||||
|     - change_multiple_triggers_result_check.task_exists == True |     - change_multiple_triggers_result_check.task_exists == True | ||||||
|     - change_multiple_triggers_result_check.task.triggers|count == 2 |     - change_multiple_triggers_result_check.triggers|count == 2 | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].Type == "TASK_TRIGGER_MONTHLY" |     - change_multiple_triggers_result_check.triggers[0].type == "TASK_TRIGGER_MONTHLY" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].Enabled == True |     - change_multiple_triggers_result_check.triggers[0].enabled == True | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - change_multiple_triggers_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].EndBoundary == None |     - change_multiple_triggers_result_check.triggers[0].end_boundary == None | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].DaysOfMonth == "1,5,10,15,20,25,30" |     - change_multiple_triggers_result_check.triggers[0].days_of_month == "1,5,10,15,20,25,30" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].MonthsOfYear == "march,may,july" |     - change_multiple_triggers_result_check.triggers[0].months_of_year == "march,may,july" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[0].RunOnLastDayOfMonth == True |     - change_multiple_triggers_result_check.triggers[0].run_on_last_day_of_month == True | ||||||
|     - change_multiple_triggers_result_check.task.triggers[1].Type == "TASK_TRIGGER_TIME" |     - change_multiple_triggers_result_check.triggers[1].type == "TASK_TRIGGER_TIME" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[1].Enabled == True |     - change_multiple_triggers_result_check.triggers[1].enabled == True | ||||||
|     - change_multiple_triggers_result_check.task.triggers[1].StartBoundary == "2000-01-01T00:00:01" |     - change_multiple_triggers_result_check.triggers[1].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - change_multiple_triggers_result_check.task.triggers[1].EndBoundary == None |     - change_multiple_triggers_result_check.triggers[1].end_boundary == None | ||||||
|     - change_multiple_triggers_result_check.task.triggers[1].RandomDelay == "PT10M5S" |     - change_multiple_triggers_result_check.triggers[1].random_delay == "PT10M5S" | ||||||
| 
 | 
 | ||||||
| - name: change task with multiple triggers | - name: change task with multiple triggers | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -453,7 +453,7 @@ | ||||||
|   register: change_multiple_triggers |   register: change_multiple_triggers | ||||||
| 
 | 
 | ||||||
| - name: get result of change task with multiple triggers | - name: get result of change task with multiple triggers | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: change_multiple_triggers_result |   register: change_multiple_triggers_result | ||||||
|  | @ -463,16 +463,16 @@ | ||||||
|     that: |     that: | ||||||
|     - change_multiple_triggers|changed |     - change_multiple_triggers|changed | ||||||
|     - change_multiple_triggers_result.task_exists == True |     - change_multiple_triggers_result.task_exists == True | ||||||
|     - change_multiple_triggers_result.task.triggers|count == 2 |     - change_multiple_triggers_result.triggers|count == 2 | ||||||
|     - change_multiple_triggers_result.task.triggers[0].Type == "TASK_TRIGGER_WEEKLY" |     - change_multiple_triggers_result.triggers[0].type == "TASK_TRIGGER_WEEKLY" | ||||||
|     - change_multiple_triggers_result.task.triggers[0].Enabled == True |     - change_multiple_triggers_result.triggers[0].enabled == True | ||||||
|     - change_multiple_triggers_result.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - change_multiple_triggers_result.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - change_multiple_triggers_result.task.triggers[0].EndBoundary == None |     - change_multiple_triggers_result.triggers[0].end_boundary == None | ||||||
|     - change_multiple_triggers_result.task.triggers[0].DaysOfWeek == "tuesday,friday" |     - change_multiple_triggers_result.triggers[0].days_of_week == "tuesday,friday" | ||||||
|     - change_multiple_triggers_result.task.triggers[1].Type == "TASK_TRIGGER_REGISTRATION" |     - change_multiple_triggers_result.triggers[1].type == "TASK_TRIGGER_REGISTRATION" | ||||||
|     - change_multiple_triggers_result.task.triggers[1].Enabled == False |     - change_multiple_triggers_result.triggers[1].enabled == False | ||||||
|     - change_multiple_triggers_result.task.triggers[1].StartBoundary == None |     - change_multiple_triggers_result.triggers[1].start_boundary == None | ||||||
|     - change_multiple_triggers_result.task.triggers[1].EndBoundary == None |     - change_multiple_triggers_result.triggers[1].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: change task with multiple triggers (idempotent) | - name: change task with multiple triggers (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -506,7 +506,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of remove trigger from multiple triggers (check mode) | - name: get result of remove trigger from multiple triggers (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_single_trigger_result_check |   register: remove_single_trigger_result_check | ||||||
|  | @ -516,16 +516,16 @@ | ||||||
|     that: |     that: | ||||||
|     - remove_single_trigger_check|changed |     - remove_single_trigger_check|changed | ||||||
|     - remove_single_trigger_result_check.task_exists == True |     - remove_single_trigger_result_check.task_exists == True | ||||||
|     - remove_single_trigger_result_check.task.triggers|count == 2 |     - remove_single_trigger_result_check.triggers|count == 2 | ||||||
|     - remove_single_trigger_result_check.task.triggers[0].Type == "TASK_TRIGGER_WEEKLY" |     - remove_single_trigger_result_check.triggers[0].type == "TASK_TRIGGER_WEEKLY" | ||||||
|     - remove_single_trigger_result_check.task.triggers[0].Enabled == True |     - remove_single_trigger_result_check.triggers[0].enabled == True | ||||||
|     - remove_single_trigger_result_check.task.triggers[0].StartBoundary == "2000-01-01T00:00:01" |     - remove_single_trigger_result_check.triggers[0].start_boundary == "2000-01-01T00:00:01" | ||||||
|     - remove_single_trigger_result_check.task.triggers[0].EndBoundary == None |     - remove_single_trigger_result_check.triggers[0].end_boundary == None | ||||||
|     - remove_single_trigger_result_check.task.triggers[0].DaysOfWeek == "tuesday,friday" |     - remove_single_trigger_result_check.triggers[0].days_of_week == "tuesday,friday" | ||||||
|     - remove_single_trigger_result_check.task.triggers[1].Type == "TASK_TRIGGER_REGISTRATION" |     - remove_single_trigger_result_check.triggers[1].type == "TASK_TRIGGER_REGISTRATION" | ||||||
|     - remove_single_trigger_result_check.task.triggers[1].Enabled == False |     - remove_single_trigger_result_check.triggers[1].enabled == False | ||||||
|     - remove_single_trigger_result_check.task.triggers[1].StartBoundary == None |     - remove_single_trigger_result_check.triggers[1].start_boundary == None | ||||||
|     - remove_single_trigger_result_check.task.triggers[1].EndBoundary == None |     - remove_single_trigger_result_check.triggers[1].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: remove trigger from multiple triggers | - name: remove trigger from multiple triggers | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -539,7 +539,7 @@ | ||||||
|   register: remove_single_trigger |   register: remove_single_trigger | ||||||
| 
 | 
 | ||||||
| - name: get result of remove trigger from multiple triggers | - name: get result of remove trigger from multiple triggers | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_single_trigger_result |   register: remove_single_trigger_result | ||||||
|  | @ -549,11 +549,11 @@ | ||||||
|     that: |     that: | ||||||
|     - remove_single_trigger|changed |     - remove_single_trigger|changed | ||||||
|     - remove_single_trigger_result.task_exists == True |     - remove_single_trigger_result.task_exists == True | ||||||
|     - remove_single_trigger_result.task.triggers|count == 1 |     - remove_single_trigger_result.triggers|count == 1 | ||||||
|     - remove_single_trigger_result.task.triggers[0].Type == "TASK_TRIGGER_REGISTRATION" |     - remove_single_trigger_result.triggers[0].type == "TASK_TRIGGER_REGISTRATION" | ||||||
|     - remove_single_trigger_result.task.triggers[0].Enabled == False |     - remove_single_trigger_result.triggers[0].enabled == False | ||||||
|     - remove_single_trigger_result.task.triggers[0].StartBoundary == None |     - remove_single_trigger_result.triggers[0].start_boundary == None | ||||||
|     - remove_single_trigger_result.task.triggers[0].EndBoundary == None |     - remove_single_trigger_result.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: remove trigger from multiple triggers (idempotent) | - name: remove trigger from multiple triggers (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -582,7 +582,7 @@ | ||||||
|   check_mode: yes |   check_mode: yes | ||||||
| 
 | 
 | ||||||
| - name: get result of remove all triggers (check mode) | - name: get result of remove all triggers (check mode) | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_triggers_result_check |   register: remove_triggers_result_check | ||||||
|  | @ -592,11 +592,11 @@ | ||||||
|     that: |     that: | ||||||
|     - remove_triggers_check|changed |     - remove_triggers_check|changed | ||||||
|     - remove_triggers_result_check.task_exists == True |     - remove_triggers_result_check.task_exists == True | ||||||
|     - remove_triggers_result_check.task.triggers|count == 1 |     - remove_triggers_result_check.triggers|count == 1 | ||||||
|     - remove_triggers_result_check.task.triggers[0].Type == "TASK_TRIGGER_REGISTRATION" |     - remove_triggers_result_check.triggers[0].type == "TASK_TRIGGER_REGISTRATION" | ||||||
|     - remove_triggers_result_check.task.triggers[0].Enabled == False |     - remove_triggers_result_check.triggers[0].enabled == False | ||||||
|     - remove_triggers_result_check.task.triggers[0].StartBoundary == None |     - remove_triggers_result_check.triggers[0].start_boundary == None | ||||||
|     - remove_triggers_result_check.task.triggers[0].EndBoundary == None |     - remove_triggers_result_check.triggers[0].end_boundary == None | ||||||
| 
 | 
 | ||||||
| - name: remove all triggers | - name: remove all triggers | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  | @ -608,7 +608,7 @@ | ||||||
|   register: remove_triggers |   register: remove_triggers | ||||||
| 
 | 
 | ||||||
| - name: get result of remove all triggers | - name: get result of remove all triggers | ||||||
|   test_task_stat: |   win_scheduled_task_stat: | ||||||
|     path: \ |     path: \ | ||||||
|     name: '{{test_scheduled_task_name}}' |     name: '{{test_scheduled_task_name}}' | ||||||
|   register: remove_triggers_result |   register: remove_triggers_result | ||||||
|  | @ -618,7 +618,7 @@ | ||||||
|     that: |     that: | ||||||
|     - remove_triggers|changed |     - remove_triggers|changed | ||||||
|     - remove_triggers_result.task_exists == True |     - remove_triggers_result.task_exists == True | ||||||
|     - remove_triggers_result.task.triggers|count == 0 |     - remove_triggers_result.triggers|count == 0 | ||||||
| 
 | 
 | ||||||
| - name: remove all triggers (idempotent) | - name: remove all triggers (idempotent) | ||||||
|   win_scheduled_task: |   win_scheduled_task: | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								test/integration/targets/win_scheduled_task_stat/aliases
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/integration/targets/win_scheduled_task_stat/aliases
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | windows/ci/group3 | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | --- | ||||||
|  | test_scheduled_task_stat_name: Test Task | ||||||
|  | test_scheduled_task_stat_path: \test path | ||||||
							
								
								
									
										150
									
								
								test/integration/targets/win_scheduled_task_stat/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										150
									
								
								test/integration/targets/win_scheduled_task_stat/tasks/main.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,150 @@ | ||||||
|  | --- | ||||||
|  | - name: ensure task is deleted before test | ||||||
|  |   win_scheduled_task: | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     state: absent | ||||||
|  | 
 | ||||||
|  | # folder stat tests | ||||||
|  | - name: get stat of a folder that is missing | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |   register: stat_folder_missing | ||||||
|  | 
 | ||||||
|  | - name: assert get stat of a folder that is missing | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_folder_missing.folder_exists == False | ||||||
|  | 
 | ||||||
|  | - name: get stat of existing folder | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: \ | ||||||
|  |   register: stat_folder_present | ||||||
|  | 
 | ||||||
|  | - name: assert get stat of existing folder | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_folder_present.folder_exists == True | ||||||
|  |     - stat_folder_present.folder_task_count is defined | ||||||
|  |     - stat_folder_present.folder_task_names is defined | ||||||
|  | 
 | ||||||
|  | - name: create scheduled task in folder | ||||||
|  |   win_scheduled_task: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |     state: present | ||||||
|  |     logon_type: interactive_token | ||||||
|  |     username: Administrator | ||||||
|  |     author: Ansible Author | ||||||
|  |     description: Fake description | ||||||
|  |     execution_time_limit: PT23H | ||||||
|  |     disallow_start_if_on_batteries: false | ||||||
|  |     restart_count: 3 | ||||||
|  |     restart_interval: PT15M | ||||||
|  |     actions: | ||||||
|  |     - path: cmd.exe | ||||||
|  |     - path: C:\temp\some.exe | ||||||
|  |       arguments: --help | ||||||
|  |       working_directory: C:\temp | ||||||
|  |     triggers: | ||||||
|  |     - type: boot | ||||||
|  |       delay: PT15M | ||||||
|  |     - type: monthly | ||||||
|  |       days_of_month: 5,15,30 | ||||||
|  |       months_of_year: june,december | ||||||
|  |       run_on_last_day_of_month: true | ||||||
|  |       start_boundary: '2017-09-20T03:44:38' | ||||||
|  | 
 | ||||||
|  | - name: get stat of existing folder with task | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |   register: stat_folder_with_task | ||||||
|  | 
 | ||||||
|  | - name: assert get stat of existing folder with task | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_folder_with_task.folder_exists == True | ||||||
|  |     - stat_folder_with_task.folder_task_count == 1 | ||||||
|  |     - stat_folder_with_task.folder_task_names[0] == "Test Task" | ||||||
|  |     - stat_folder_with_task.task_exists is not defined | ||||||
|  | 
 | ||||||
|  | # task stat tests | ||||||
|  | - name: get stat of missing task | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     name: fake task | ||||||
|  |   register: stat_task_missing | ||||||
|  | 
 | ||||||
|  | - name: assert get stat of missing task | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_task_missing.task_exists == False | ||||||
|  | 
 | ||||||
|  | - name: get stat of existing task | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |   register: stat_task_present | ||||||
|  | 
 | ||||||
|  | - name: assert get stat of existing task | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_task_present.task_exists == True | ||||||
|  |     - stat_task_present.actions|count == 2 | ||||||
|  |     - stat_task_present.actions[0].path == "cmd.exe" | ||||||
|  |     - stat_task_present.actions[0].type == "TASK_ACTION_EXEC" | ||||||
|  |     - stat_task_present.actions[0].working_directory == None | ||||||
|  |     - stat_task_present.actions[1].arguments == "--help" | ||||||
|  |     - stat_task_present.actions[1].path == "C:\\temp\some.exe" | ||||||
|  |     - stat_task_present.actions[1].type == "TASK_ACTION_EXEC" | ||||||
|  |     - stat_task_present.actions[1].working_directory == "C:\\temp" | ||||||
|  |     - stat_task_present.principal.display_name == None | ||||||
|  |     - stat_task_present.principal.group_id == None | ||||||
|  |     - stat_task_present.principal.logon_type == "TASK_LOGON_INTERACTIVE_TOKEN" | ||||||
|  |     - stat_task_present.principal.run_level == "TASK_RUNLEVEL_LUA" | ||||||
|  |     - stat_task_present.principal.user_id.endswith("Administrator") | ||||||
|  |     - stat_task_present.registration_info.author == "Ansible Author" | ||||||
|  |     - stat_task_present.registration_info.date is defined | ||||||
|  |     - stat_task_present.registration_info.description == "Fake description" | ||||||
|  |     - stat_task_present.settings.disallow_start_if_on_batteries == False | ||||||
|  |     - stat_task_present.settings.execution_time_limit == "PT23H" | ||||||
|  |     - stat_task_present.settings.restart_count == 3 | ||||||
|  |     - stat_task_present.settings.restart_interval == "PT15M" | ||||||
|  |     - stat_task_present.state.status == "TASK_STATE_READY" | ||||||
|  |     - stat_task_present.triggers|count == 2 | ||||||
|  |     - stat_task_present.triggers[0].delay == "PT15M" | ||||||
|  |     - stat_task_present.triggers[0].type == "TASK_TRIGGER_BOOT" | ||||||
|  |     - stat_task_present.triggers[1].days_of_month == "5,15,30" | ||||||
|  |     - stat_task_present.triggers[1].months_of_year == "june,december" | ||||||
|  |     - stat_task_present.triggers[1].run_on_last_day_of_month == True | ||||||
|  |     - stat_task_present.triggers[1].start_boundary == "2017-09-20T03:44:38" | ||||||
|  |     - stat_task_present.triggers[1].type == "TASK_TRIGGER_MONTHLY" | ||||||
|  | 
 | ||||||
|  | - name: change principal to system account so it will run in the next step | ||||||
|  |   win_scheduled_task: | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     username: SYSTEM | ||||||
|  | 
 | ||||||
|  | - name: start the scheduled task | ||||||
|  |   win_command: schtasks.exe /Run /TN "{{test_scheduled_task_stat_path}}\{{test_scheduled_task_stat_name}}" | ||||||
|  | 
 | ||||||
|  | - name: get stat of running task | ||||||
|  |   win_scheduled_task_stat: | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |   register: stat_task_running | ||||||
|  | 
 | ||||||
|  | - name: assert stat of running task | ||||||
|  |   assert: | ||||||
|  |     that: | ||||||
|  |     - stat_task_running.state.status == "TASK_STATE_RUNNING" | ||||||
|  | 
 | ||||||
|  | - name: stop the scheduled task | ||||||
|  |   win_command: schtasks.exe /End /TN "{{test_scheduled_task_stat_path}}\{{test_scheduled_task_stat_name}}" | ||||||
|  | 
 | ||||||
|  | - name: ensure task is delete after test | ||||||
|  |   win_scheduled_task: | ||||||
|  |     name: '{{test_scheduled_task_stat_name}}' | ||||||
|  |     path: '{{test_scheduled_task_stat_path}}' | ||||||
|  |     state: absent | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue