Functions/Test-MSPCompleteTaskShouldSkip.ps1

<#
.SYNOPSIS
    This function checks if the current executing MSPComplete task should be skipped.
.DESCRIPTION
    This function checks if the current executing MSPComplete task should be skipped.
    It does so by:
        - Checking if 'SKIP_MSPC_TASK' is in any of the task string inputs (case insensitive)
        - Checking if the entry in $mspc.Data for 'SKIP_MSPC_TASK_taskInstanceId' is true
    The check is only done if the BitTitan runbook environment is not set to running on the local
    machine (i.e. running on the MSPComplete platform)
#>

function Test-MSPCompleteTaskShouldSkip {
    # Retrieve the BitTitan runbook environment
    $btRunbookEnvironment = Get-BT_RunbookEnvironment

    # Check if this task is running on the local machine
    if ($btRunbookEnvironment.IsRunningOnLocalMachine) {
        return $false
    }

    # Check if 'SKIP_MSPC_TASK' is in any of the task string inputs
    if (Find-StringInMSPCompleteTaskInputs -SearchString "SKIP_MSPC_TASK" -CaseSensitive:$false) {
        Write-Information "This task has been directed to be skipped using 'SKIP_MSPC_TASK' in the task string inputs."
        return $true
    }

    # Check if the entry in $mspc.Data is true
    if ($mspc.Data."SKIP_MSPC_TASK_$($mspc.AutomationInstanceId)" -eq "true") {
        Write-Information "This task has been directed to be skipped using Task Execution Control."
        return $true
    }

    # This task will not be skipped
    return $false
}