diff --git a/CHANGELOG.md b/CHANGELOG.md index 5395348d..31b1af2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - ComputerManagementDsc - Automatically publish documentation to GitHub Wiki - Fixes [Issue #342](https://github.com/dsccommunity/ComputerManagementDsc/issues/342). +### Fixed + +- ScheduledTask + - Fixed issue with disabling scheduled tasks that have "Run whether user is + logged on or not" configured - Fixes [Issue #306](https://github.com/dsccommunity/ComputerManagementDsc/issues/306). + ## [8.3.0] - 2020-06-30 ### Changed diff --git a/source/DSCResources/DSC_ScheduledTask/DSC_ScheduledTask.psm1 b/source/DSCResources/DSC_ScheduledTask/DSC_ScheduledTask.psm1 index 79b366ee..e2199abd 100644 --- a/source/DSCResources/DSC_ScheduledTask/DSC_ScheduledTask.psm1 +++ b/source/DSCResources/DSC_ScheduledTask/DSC_ScheduledTask.psm1 @@ -456,7 +456,14 @@ function Set-TargetResource -and -not $PSBoundParameters.ContainsKey('ActionExecutable')) { Write-Verbose -Message ($script:localizedData.DisablingExistingScheduledTask -f $TaskName, $TaskPath) - Disable-ScheduledTask -TaskName $TaskName -TaskPath $TaskPath + if ($PSVersionTable.PSVersion -gt [Version]"5.0.0.0") + { + Disable-ScheduledTask -TaskName $TaskName -TaskPath $TaskPath + } + else + { + Disable-ScheduledTaskCustom -TaskName $TaskName -TaskPath $TaskPath + } return } @@ -1635,7 +1642,7 @@ function ConvertTo-TimeSpanStringFromScheduledTaskString .PARAMETER TaskPath The path to the task to disable. #> -function Disable-ScheduledTask +function Disable-ScheduledTaskCustom { [CmdletBinding()] param diff --git a/tests/Unit/DSC_ScheduledTask.Tests.ps1 b/tests/Unit/DSC_ScheduledTask.Tests.ps1 index a1247c30..a31f4262 100644 --- a/tests/Unit/DSC_ScheduledTask.Tests.ps1 +++ b/tests/Unit/DSC_ScheduledTask.Tests.ps1 @@ -93,6 +93,7 @@ try Describe 'DSC_ScheduledTask' { BeforeAll { + Mock -CommandName Disable-ScheduledTask Mock -CommandName Register-ScheduledTask Mock -CommandName Set-ScheduledTask Mock -CommandName Unregister-ScheduledTask @@ -222,7 +223,14 @@ try It 'Should remove the scheduled task in the set method' { Set-TargetResource @testParameters - Assert-MockCalled Register-ScheduledTask -Exactly -Times 1 + if ($PSVersionTable.PSVersion -gt [Version]"5.0.0.0") + { + Assert-MockCalled Disable-ScheduledTask -Exactly -Times 1 + } + else + { + Assert-MockCalled Register-ScheduledTask -Exactly -Times 1 + } } } @@ -1573,7 +1581,14 @@ try It 'Should disable the scheduled task in the set method' { Set-TargetResource @testParameters - Assert-MockCalled Register-ScheduledTask -Exactly -Times 1 + if ($PSVersionTable.PSEdition -gt [Version]"5.0.0.0") + { + Assert-MockCalled Disable-ScheduledTask -Exactly -Times 1 + } + else + { + Assert-MockCalled Register-ScheduledTask -Exactly -Times 1 + } } }