Private/Register-cChocoExTask.ps1
function Register-cChocoExTask { [CmdletBinding()] param () #Gather Variables $TaskName = 'cChocoExTask01' $TaskPath = '\cChocoEx\' $Description = 'This Task waits for the toast notification application installation activation in cChocoEx' $UserID = "NT AUTHORITY\SYSTEM" $FilePath = (Join-Path -Path ($PSScriptRoot | Split-Path) -ChildPath 'scripts\loop.ps1') $ScheduledTaskSettingsSet = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -MultipleInstances 'IgnoreNew' $ScheduledTaskPrincipal = New-ScheduledTaskPrincipal -UserId $UserID -LogonType ServiceAccount -RunLevel Highest $TaskTrigger01 = New-ScheduledTaskTrigger -AtLogOn $TaskTrigger02 = New-ScheduledTaskTrigger -AtStartup $ScriptBlock = { do { $ItemProperty = Get-ItemProperty -Path "HKLM:\Software\cChocoEx\" -Name 'OverRideMaintenanceWindow' -ErrorAction SilentlyContinue; Start-Sleep -Seconds 5 } until ($ItemProperty.OverRideMaintenanceWindow -eq 1); Start-cChocoEx -OverrideMaintenanceWindow -EnableNotifications } $ScheduledTaskAction = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Executionpolicy Bypass -NoLogo -NonInteractive -WindowStyle Hidden -File `"$FilePath`"" #Restrictions if ((Test-TSEnv) -eq $true) { Write-Log -Severity "Information" -Message "Task Sequence Environment Detected, Registration of $TaskName Restricted" return } #if ((Test-AutopilotESP) -eq $true) { # Write-Log -Severity "Information" -Message "Autopilot Enrollment Status Page Environment Detected, Registration of $TaskName Restricted" # return #} if ((Test-IsWinPe) -eq $true) { Write-Log -Severity "Information" -Message "WinPE Environment Detected, Registration of $TaskName Restricted" return } if ((Test-IsWinOs.OOBE) -eq $true) { Write-Log -Severity "Information" -Message "WinOS OOBE Environment Detected, Registration of $TaskName Restricted" return } if ((Test-IsWinSE) -eq $true) { Write-Log -Severity "Information" -Message "WinSE Environment Detected, Registration of $TaskName Restricted" return } #ScheduledTaskSplat $ScheduledTaskParams = @{ TaskName = $TaskName TaskPath = $TaskPath Settings = $ScheduledTaskSettingsSet Trigger = @($TaskTrigger01, $TaskTrigger02) Description = $Description Principal = $ScheduledTaskPrincipal Action = $ScheduledTaskAction Force = $true } #Register Task Write-Log -Severity 'Information' -Message "Registering Scheduled Task $TaskName" try { $null = Register-ScheduledTask @ScheduledTaskParams Write-Log -Severity 'Information' -Message "Registering Scheduled Task $TaskName - Success" } catch { Write-Log -Severity 'Error' -Message "Registering Scheduled Task $TaskName - Failure" Write-Log -Severity 'Error' -Message "$($_.Exception.Message)" } #Validate Task Exists try { $null = Get-ScheduledTask -TaskName $TaskName } catch { Write-Log -Severity 'Error' -Message "Required Scheduled Task $TaskName Not Found" Write-Log -Severity 'Error' -Message "$($_.Exception.Message)" } #Start Task Start-cChocoExTask } |