Scripts/Rename-BPAObject.ps1
function Rename-BPAObject { <# .SYNOPSIS Renames an AutoMate BPA object. .DESCRIPTION Rename-BPAObject receives BPA object(s) on the pipeline, or via the parameter $InputObject, and renames the object(s). .PARAMETER InputObject The object(s) to be locked. .INPUTS The following objects can be renamed by this function: Folder Workflow WorkflowVariable Task Process AgentGroup UserGroup .EXAMPLE Get-BPAWorkflow "My Workflow" | Rename-BPAObject "My Renamed Workflow" .NOTES Author(s): : David Seibel Contributor(s) : Date Created : 11/07/2016 Date Modified : 02/08/2018 .LINK https://github.com/davidseibel/PoshBPA #> [CmdletBinding()] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $InputObject, [Parameter(Mandatory = $true, Position = 0)] [ValidateNotNullOrEmpty()] [string]$Name ) PROCESS { foreach ($obj in $InputObject) { $restResource = ([BPATypeDictionary]::($obj.TypeName)).RestResource switch ($obj.TypeName) { "Folder" { $update = Get-BPAFolder -ID $obj.ID -BPAServer $obj.BPAServer if ($update.ID -notin (Get-BPAFolderRoot -BPAServer $obj.BPAServer).ID) { $update.Name = $Name } else { throw "A root folder cannot be renamed!" } } "Workflow" { $update = Get-BPAWorkflow -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "Task" { $update = Get-BPATask -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "Condition" { $update = Get-BPACondition -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "Process" { $update = Get-BPAProcess -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "AgentGroup" { $update = Get-BPAAgentGroup -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "UserGroup" { $update = Get-BPAUserGroup -ID $obj.ID -BPAServer $obj.BPAServer $update.Name = $Name } "WorkflowVariable" { $update = Get-BPAWorkflow -ID $obj.ParentID -BPAServer $obj.BPAServer $oldNameVar = $update.Variables | Where-Object {$_.ID -eq $obj.ID} $newNameVar = $update.Variables | Where-Object {$_.Name -eq $NewName} if ($null -eq $newNameVar) { $oldNameVar.Name = $Name $restResource = "workflows" } else { throw "Workflow $($update.Name) already contains a variable with the name '$NewName'!" } } default { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } $update | Set-BPAObject Write-Verbose "Renamed $($obj.TypeName) '$($obj.Name)' to '$($Name)'." } } } |