Scripts/Remove-BPAAgentGroupMember.ps1
function Remove-BPAAgentGroupMember { <# .SYNOPSIS Removes agents from an AutoMate BPA agent group. .DESCRIPTION Remove-BPAAgentGroupMember can remove agents from an agent group. .PARAMETER InputObject The agent group to modify. .PARAMETER Agent The agent(s) to remove to the agent group. .INPUTS The following BPA object types can be modified by this function: AgentGroup .EXAMPLE # Remove all agents from an agent group Get-BPAAgentGroup "All Agents" | Remove-BPAAgentGroupMember -Agent * .EXAMPLE # Remove an agent from an agent group (using agent object) Get-BPAAgentGroup | Remove-BPAAgentGroupMember -Agent (Get-BPAAgent "Agent1") .NOTES Author(s): : David Seibel Contributor(s) : Date Created : 11/07/2016 Date Modified : 05/01/2018 .LINK https://github.com/davidseibel/PoshBPA #> [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="Medium")] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $InputObject, [Parameter(Mandatory = $true, Position = 0)] $Agent ) PROCESS { foreach ($obj in $InputObject) { if ($obj.TypeName -eq "AgentGroup") { $update = Get-BPAAgentGroup -ID $obj.ID -BPAServer $obj.BPAServer $shouldUpdate = $false foreach ($a in $Agent) { if ($a.PSObject.Properties.Name -contains "TypeName") { if ($a.TypeName -ne "Agent") { throw "Unsupported input type '$($a.TypeName)' encountered!" } } elseif ($a -is [string]) { $tempAgent = Get-BPAAgent -Name $a -BPAServer $obj.BPAServer if ($tempAgent) { $a = $tempAgent } else { throw "Agent '$a' not found!" } } if ($update.AgentIDs -contains $a.ID) { $update.AgentIDs = $update.AgentIDs | Where-Object {$_ -ne $a.ID} $shouldUpdate = $true Write-Verbose "Removing agent '$($a.Name)' from agent group '$($obj.Name)'." } else { Write-Verbose "Agent '$($a.Name)' not present in agent group '$($obj.Name)'." } } if (($update.AgentIDs | Measure-Object).Count -eq 0) { $update.AgentIDs = @() } if ($shouldUpdate) { $update | Set-BPAObject Write-Verbose "Completed removing agents from agent group '$($obj.Name)'." } } else { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } } } |