Samples/AssignJobToGroup.ps1

# This script demonstrates how to assign an existing job to the endpoints in an existing logical group.

$ErrorActionPreference = "Stop"
$InformationPreference = "Continue"

# --- Configuration ---
# Names are assumed to be unique
$logicalGroupName = "YourLogicalGroup"
$jobName = "Your job name"

try {
    # Get the logical group object. Using Select-bCPageData simplifies retrieving the single item.
    $logicalGroup = Get-bCEndpointsLogicalGroups -Name $logicalGroupName | Select-bCPageData
    $logicalGroupID = $logicalGroup.id
    Write-Information "Found logical group '$($logicalGroup.name)' with ID: $logicalGroupID"

    # Get the job definition object.
    $jobDefinition = Get-bCJobsJobDefinitions -Name $jobName | Select-bCPageData
    $jobDefinitionId = $jobDefinition.id
    Write-Information "Found job definition '$($jobDefinition.name)' with ID: $jobDefinitionId"

    # Create a request object that defines which job to assign and how to handle it.
    # - jobDefinitionId: Specifies the job to be assigned.
    # - startIfAlreadyAssigned: If true, the job will be restarted on endpoints where it is already assigned.
    $jobDefinitionRequest = @{
        jobDefinitionId = $jobDefinitionId
        startIfAlreadyAssigned = $true
    }

    # Assign the job to the logical group by invoking the corresponding action.
    Invoke-bCJobsAssignJobDefinitionToLogicalGroup -LogicalGroupId $logicalGroupID -AssignJobDefinitionRequest $jobDefinitionRequest
    Write-Output "Successfully assigned job '$jobName' to logical group '$logicalGroupName'."
}
catch {
    Write-Error "An error occurred: $($_.Exception.Message):`n$($_.ScriptStackTrace)"
}