Scripts/Start-BPAProcess.ps1
function Start-BPAProcess { <# .SYNOPSIS Starts AutoMate BPA processes. .DESCRIPTION Start-BPAProcess starts processes. .PARAMETER InputObject The processes to start. .INPUTS Processes can be supplied on the pipeline to this function. .EXAMPLE # Starts process "My Process" on agent "agent01" Get-BPAProcess "My Process" | Start-BPAProcess -Agent "agent01" .NOTES Author(s): : David Seibel Contributor(s) : Date Created : 09/23/2016 Date Modified : 02/27/2018 .LINK https://github.com/davidseibel/PoshBPA #> [CmdletBinding()] [OutputType([System.Object[]])] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [ValidateNotNullOrEmpty()] $InputObject, [Parameter(ParameterSetName = "Agent")] [ValidateNotNullOrEmpty()] $Agent, [Parameter(ParameterSetName = "AgentGroup")] [ValidateNotNullOrEmpty()] $AgentGroup ) PROCESS { foreach ($obj in $InputObject) { if ($obj.TypeName -eq "Process") { switch($PSCmdlet.ParameterSetName) { "Agent" { if ($Agent.TypeName -ne "Agent") { $name = $Agent $Agent = Get-BPAAgent -Name $name -BPAServer $obj.BPAServer if (($Agent | Measure-Object).Count -ne 1) { throw "Agent '$name' not found!" } } if ($Agent.AgentTypeName -eq "ProcessAgent") { Write-Verbose "Running process $($obj.Name) on agent $($Agent.Name)." $instanceID = Invoke-BPARestMethod -Resource "processes/$($obj.ID)/run?process_agent_id=$($Agent.ID)" -RestMethod Post -BPAServer $obj.BPAServer Start-Sleep -Seconds 1 # The instance can't be retrieved right away, have to pause briefly Invoke-BPARestMethod -Resource ('instances/list?filter_sets="ID","=","\"' + $instanceID + '\""') -RestMethod Get -BPAServer $obj.BPAServer } else { throw "Agent $($Agent.Name) is not a process agent!" } } "AgentGroup" { if ($AgentGroup.TypeName -ne "AgentGroup") { $name = $AgentGroup $AgentGroup = Get-BPAAgentGroup -Name $name -BPAServer $obj.BPAServer if (($AgentGroup | Measure-Object).Count -ne 1) { throw "Agent group '$name' not found!" } } Write-Verbose "Running process $($obj.Name) on agent group $($AgentGroup.Name)." $instanceID = Invoke-BPARestMethod -Resource "processes/$($obj.ID)/run?agent_group_id=$($AgentGroup.ID)" -RestMethod Post -BPAServer $obj.BPAServer Start-Sleep -Seconds 1 # The instance can't be retrieved right away, have to pause briefly Invoke-BPARestMethod -Resource ('instances/list?filter_sets="ID","=","\"' + $instanceID + '\""') -RestMethod Get -BPAServer $obj.BPAServer } } } else { if ($_) { $message = "Unsupported input type '$($obj.TypeName)' encountered!" } else { $message = "Unsupported input type '$($obj.Type)' encountered!" } Write-Error -Message $message -TargetObject -TargetObject $obj } } } } |