From 66d9d896e48e4846b3f7660160f4827004b9dbd4 Mon Sep 17 00:00:00 2001 From: Michael Perzel Date: Tue, 7 Jul 2015 11:55:46 -0500 Subject: [PATCH] Update method to determine if task exists, add days of week parameter to weekly triggers --- .../extras/windows/win_scheduled_task.ps1 | 49 +++++++++++++------ .../extras/windows/win_scheduled_task.py | 4 ++ 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/lib/ansible/modules/extras/windows/win_scheduled_task.ps1 b/lib/ansible/modules/extras/windows/win_scheduled_task.ps1 index 07b1c3adf6..d5102572e6 100644 --- a/lib/ansible/modules/extras/windows/win_scheduled_task.ps1 +++ b/lib/ansible/modules/extras/windows/win_scheduled_task.ps1 @@ -65,6 +65,9 @@ elseif ($state -eq "present") { Fail-Json $result "missing required argument: execute" } +if( $state -ne "present" -and $state -ne "absent") { + Fail-Json $result "state must be present or absent" +} if ($params.path) { $path = "\{0}\" -f $params.path @@ -89,26 +92,40 @@ elseif($state -eq "present") { Fail-Json $result "missing required argument: time" } - -$exists = $true -#hack to determine if task exists -try { - $task = Get-ScheduledTask -TaskName $name -TaskPath $path -} -catch { - $exists = $false | ConvertTo-Bool -} -Set-Attr $result "exists" "$exists" - - -try +if ($params.daysOfWeek) { + $daysOfWeek = $params.daysOfWeek +} +elseif ($frequency -eq "weekly") +{ + Fail-Json $result "missing required argument: daysOfWeek" +} + +try { + $task = Get-ScheduledTask -TaskPath "$path" | Where-Object {$_.TaskName -eq "$name"} + $measure = $task | measure + if ($measure.count -eq 1 ) { + $exists = $true + } + elseif ($measure.count -eq 0 -and $state -eq "absent" ){ + Set-Attr $result "msg" "Task does not exist" + Exit-Json $result + } + elseif ($measure.count -eq 0){ + $exists = $false + } + else { + # This should never occur + Fail-Json $result "$measure.count scheduled tasks found" + } + Set-Attr $result "exists" "$exists" + if ($frequency){ if ($frequency -eq "daily") { $trigger = New-ScheduledTaskTrigger -Daily -At $time } - elseif (frequency -eq "weekly"){ - $trigger = New-ScheduledTaskTrigger -Weekly -At $time + elseif ($frequency -eq "weekly"){ + $trigger = New-ScheduledTaskTrigger -Weekly -At $time -DaysOfWeek $daysOfWeek } else { Fail-Json $result "frequency must be daily or weekly" @@ -164,4 +181,4 @@ try catch { Fail-Json $result $_.Exception.Message -} \ No newline at end of file +} diff --git a/lib/ansible/modules/extras/windows/win_scheduled_task.py b/lib/ansible/modules/extras/windows/win_scheduled_task.py index 4ab830d05e..54d8e9f16b 100644 --- a/lib/ansible/modules/extras/windows/win_scheduled_task.py +++ b/lib/ansible/modules/extras/windows/win_scheduled_task.py @@ -60,6 +60,10 @@ options: description: - Time to execute scheduled task required: false + daysOfWeek: + description: + - Days of the week to run a weekly task + required: false path: description: - Folder path of scheduled task