@@ -19,6 +19,9 @@ function Add-CIPPScheduledTask {
1919 [Parameter (Mandatory = $true , ParameterSetName = ' RunNow' )]
2020 [string ]$RowKey ,
2121
22+ [Parameter (Mandatory = $false , ParameterSetName = ' Default' )]
23+ [string ]$DesiredStartTime = $null ,
24+
2225 [Parameter (Mandatory = $false , ParameterSetName = ' Default' )]
2326 [Parameter (Mandatory = $false , ParameterSetName = ' RunNow' )]
2427 $Headers
@@ -119,8 +122,25 @@ function Add-CIPPScheduledTask {
119122 $task.Recurrence.value
120123 }
121124
122- if ([int64 ]$task.ScheduledTime -eq 0 -or [string ]::IsNullOrEmpty($task.ScheduledTime )) {
123- $task.ScheduledTime = [int64 ](([datetime ]::UtcNow) - (Get-Date ' 1/1/1970' )).TotalSeconds
125+ if ($DesiredStartTime ) {
126+ try {
127+ # Parse the epoch time
128+ $epochSeconds = [int64 ]$DesiredStartTime
129+ # Set ScheduledTime to the desired time
130+ $task.ScheduledTime = $epochSeconds
131+ }
132+ catch {
133+ Write-Warning " Failed to parse DesiredStartTime: $DesiredStartTime . Using provided ScheduledTime."
134+ # Fall back to default
135+ if ([int64 ]$task.ScheduledTime -eq 0 -or [string ]::IsNullOrEmpty($task.ScheduledTime )) {
136+ $task.ScheduledTime = [int64 ](([datetime ]::UtcNow) - (Get-Date ' 1/1/1970' )).TotalSeconds
137+ }
138+ }
139+ } else {
140+ # No DesiredStartTime - use current behavior (immediate execution)
141+ if ([int64 ]$task.ScheduledTime -eq 0 -or [string ]::IsNullOrEmpty($task.ScheduledTime )) {
142+ $task.ScheduledTime = [int64 ](([datetime ]::UtcNow) - (Get-Date ' 1/1/1970' )).TotalSeconds
143+ }
124144 }
125145 $excludedTenants = if ($task.excludedTenants.value ) {
126146 $task.excludedTenants.value -join ' ,'
@@ -166,6 +186,10 @@ function Add-CIPPScheduledTask {
166186 Hidden = [bool ]$Hidden
167187 Results = ' Planned'
168188 }
189+ # Always store DesiredStartTime if provided
190+ if ($DesiredStartTime ) {
191+ $entity [' DesiredStartTime' ] = [string ]$DesiredStartTime
192+ }
169193
170194 # Store the original tenant filter for group expansion during execution
171195 if ($originalTenantFilter -is [PSCustomObject ] -and $originalTenantFilter.type -eq ' Group' ) {
0 commit comments