Scripts/Remove-BPAWorkflowLink.ps1
function Remove-BPAWorkflowLink { <# .SYNOPSIS Removes a link from a BPA workflow .DESCRIPTION Remove-BPAWorkflowLink can remove links from a workflow object. .PARAMETER InputObject The link object to remove. .INPUTS The following BPA object types can be modified by this function: WorkflowLink .EXAMPLE # Remove all links from workflow "Some Workflow" (Get-BPAWorkflow "Some Workflow").Links | Remove-BPAWorkflowVariable -Name "emailAddress" .NOTES Author(s): : David Seibel Contributor(s) : Date Created : 02/12/2018 Date Modified : 06/07/2018 .LINK https://github.com/davidseibel/PoshBPA #> [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='Medium')] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $InputObject ) PROCESS { :objectloop foreach ($obj in $InputObject) { $shouldUpdate = $false switch ($obj.Type -as [BPAConstructType]) { "WorkflowLink" { $updateObject = Get-BPAObject -ID $obj.WorkflowID -Types Workflow if (($updateObject | Measure-Object).Count -eq 1) { $updateObject.Links = @($updateObject.Links | Where-Object {$_.ID -ne $obj.ID}) $shouldUpdate = $true } else { Write-Warning "Multiple workflows found for ID $($obj.WorkflowID)! No action will be taken." continue objectloop } } default { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } if ($shouldUpdate) { $updateObject | Set-BPAObject } else { Write-Verbose "$($updateObject.TypeName) '$($updateObject.Name)' does not contain a link with ID $($obj.ID)." } } } } |