@@ -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,24 @@ 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+ } catch {
132+ Write-Warning " Failed to parse DesiredStartTime: $DesiredStartTime . Using provided ScheduledTime."
133+ # Fall back to default
134+ if ([int64 ]$task.ScheduledTime -eq 0 -or [string ]::IsNullOrEmpty($task.ScheduledTime )) {
135+ $task.ScheduledTime = [int64 ](([datetime ]::UtcNow) - (Get-Date ' 1/1/1970' )).TotalSeconds
136+ }
137+ }
138+ } else {
139+ # No DesiredStartTime - use current behavior (immediate execution)
140+ if ([int64 ]$task.ScheduledTime -eq 0 -or [string ]::IsNullOrEmpty($task.ScheduledTime )) {
141+ $task.ScheduledTime = [int64 ](([datetime ]::UtcNow) - (Get-Date ' 1/1/1970' )).TotalSeconds
142+ }
124143 }
125144 $excludedTenants = if ($task.excludedTenants.value ) {
126145 $task.excludedTenants.value -join ' ,'
@@ -166,6 +185,10 @@ function Add-CIPPScheduledTask {
166185 Hidden = [bool ]$Hidden
167186 Results = ' Planned'
168187 }
188+ # Always store DesiredStartTime if provided
189+ if ($DesiredStartTime ) {
190+ $entity [' DesiredStartTime' ] = [string ]$DesiredStartTime
191+ }
169192
170193 # Store the original tenant filter for group expansion during execution
171194 if ($originalTenantFilter -is [PSCustomObject ] -and $originalTenantFilter.type -eq ' Group' ) {
@@ -190,6 +213,7 @@ function Add-CIPPScheduledTask {
190213 $ErrorMessage = Get-NormalizedError - Message $_.Exception.Message
191214 return " Could not add task: $ErrorMessage "
192215 }
216+ Write-LogMessage - headers $Headers - API ' ScheduledTask' - message " Added task $ ( $entity.Name ) with ID $ ( $entity.RowKey ) " - Sev ' Info' - Tenant $tenantFilter
193217 return " Successfully added task: $ ( $entity.Name ) "
194218 }
195219 } catch {
0 commit comments