Scripts/Move-BPAObject.ps1
function Move-BPAObject { <# .SYNOPSIS Moves an AutoMate BPA object. .DESCRIPTION Move-BPAObject receives BPA object(s) on the pipeline, or via the parameter $InputObject, and moves the object(s) to the specified folder. .PARAMETER InputObject The object(s) to be moved. .INPUTS The following objects can be moved by this function: Workflow Task Process TaskAgent ProcessAgent AgentGroup User UserGroup .EXAMPLE Get-BPAWorkflow "My Workflow" | Move-BPAObject -Folder (Get-BPAFolder -Path \WORKFLOWS) .NOTES Author(s): : David Seibel Contributor(s) : Date Created : 11/07/2016 Date Modified : 05/01/2018 .LINK https://github.com/davidseibel/PoshBPA #> [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $InputObject, [Parameter(Mandatory = $true, Position = 0)] [ValidateScript({$_.TypeName -eq "Folder"})] $Folder ) PROCESS { foreach ($obj in $InputObject) { if ($Folder.Path -like "\$(([BPATypeDictionary]::($obj.TypeName)).RootFolderName)*") { if ($obj.ParentID -ne $Folder.ID) { switch ($obj.TypeName) { "Workflow" { $update = Get-BPAWorkflow -ID $obj.ID -BPAServer $obj.BPAServer } "Task" { $update = Get-BPATask -ID $obj.ID -BPAServer $obj.BPAServer } "Condition" { $update = Get-BPACondition -ID $obj.ID -BPAServer $obj.BPAServer } "Process" { $update = Get-BPAProcess -ID $obj.ID -BPAServer $obj.BPAServer } "Agent" { $update = Get-BPAAgent -ID $obj.ID -BPAServer $obj.BPAServer } "AgentGroup" { $update = Get-BPAAgentGroup -ID $obj.ID -BPAServer $obj.BPAServer } "User" { $update = Get-BPAUser -ID $obj.ID -BPAServer $obj.BPAServer } "UserGroup" { $update = Get-BPAUserGroup -ID $obj.ID -BPAServer $obj.BPAServer } default { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } $update.Path = Join-Path -Path $Folder.Path -ChildPath $Folder.Name $update.ParentID = $Folder.ID $update | Set-BPAObject Write-Verbose "Moved $($obj.TypeName) '$($obj.Name)' to folder $(Join-Path -Path $Folder.Path -ChildPath $Folder.Name)." } else { Write-Verbose "$($obj.TypeName) '$($obj.Name)' is already in folder $(Join-Path -Path $Folder.Path -ChildPath $Folder.Name)." } } else { Write-Error -Message "Invalid folder path $(Join-Path -Path $Folder.Path -ChildPath $Folder.Name) for object type '$($obj.TypeName)'!" -TargetObject $obj } } } } |