Public/Task/Enable-VergeTask.ps1
|
function Enable-VergeTask { <# .SYNOPSIS Enables a VergeOS scheduled task. .DESCRIPTION Enable-VergeTask enables a previously disabled scheduled task, allowing it to run according to its schedule or event triggers. .PARAMETER Task A task object from Get-VergeTask. Accepts pipeline input. .PARAMETER Key The unique key (ID) of the task to enable. .PARAMETER Name The name of the task to enable. .PARAMETER PassThru Return the task object after enabling. By default, returns nothing on success. .PARAMETER Server The VergeOS connection to use. Defaults to the current default connection. .EXAMPLE Enable-VergeTask -Name "Backup VM" Enables the task named "Backup VM". .EXAMPLE Get-VergeTask | Where-Object { -not $_.Enabled } | Enable-VergeTask Enables all disabled tasks. .EXAMPLE Enable-VergeTask -Key 5 -PassThru Enables task with key 5 and returns the updated task object. .OUTPUTS None by default. Verge.Task when -PassThru is specified. .NOTES Use Stop-VergeTask to disable a task. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Low', DefaultParameterSetName = 'ByTask')] [OutputType([PSCustomObject])] param( [Parameter(Mandatory, ValueFromPipeline, ParameterSetName = 'ByTask')] [PSTypeName('Verge.Task')] [PSCustomObject]$Task, [Parameter(Mandatory, ParameterSetName = 'ByKey')] [int]$Key, [Parameter(Mandatory, ParameterSetName = 'ByName')] [string]$Name, [Parameter()] [switch]$PassThru, [Parameter()] [object]$Server ) begin { # Resolve connection if (-not $Server) { $Server = $script:DefaultConnection } if (-not $Server) { throw [System.InvalidOperationException]::new( 'Not connected to VergeOS. Use Connect-VergeOS to establish a connection.' ) } } process { # Get the task to enable based on parameter set $targetTask = switch ($PSCmdlet.ParameterSetName) { 'ByTask' { $Task } 'ByKey' { Get-VergeTask -Key $Key -Server $Server } 'ByName' { Get-VergeTask -Name $Name -Server $Server | Select-Object -First 1 } } if (-not $targetTask) { Write-Error -Message "Task not found" -ErrorId 'TaskNotFound' return } # Check if already enabled if ($targetTask.Enabled) { Write-Warning "Task '$($targetTask.Name)' is already enabled." if ($PassThru) { Write-Output $targetTask } return } $taskKey = $targetTask.Key $taskName = $targetTask.Name # Confirm action if ($PSCmdlet.ShouldProcess($taskName, 'Enable task')) { try { Write-Verbose "Enabling task '$taskName' (Key: $taskKey)" $body = @{ enabled = $true } $response = Invoke-VergeAPI -Method PUT -Endpoint "tasks/$taskKey" -Body $body -Connection $Server Write-Verbose "Task '$taskName' has been enabled" if ($PassThru) { # Return refreshed task object Get-VergeTask -Key $taskKey -Server $Server } } catch { Write-Error -Message "Failed to enable task '$taskName': $($_.Exception.Message)" -ErrorId 'TaskEnableFailed' } } } } |