Scripts/Remove-BPAUserGroupMember.ps1
function Remove-BPAUserGroupMember { <# .SYNOPSIS Removes users from an AutoMate BPA user group. .DESCRIPTION Remove-BPAUserGroupMember can remove users from a user group. .PARAMETER InputObject The user group to modify. .PARAMETER User The users(s) to remove from the user group. .INPUTS The following BPA object types can be modified by this function: UserGroup .EXAMPLE # Remove all users from a user group Get-BPAUserGroup "All Users" | Remove-BPAUserGroupMember -User * .EXAMPLE # Remove a user from a user group (using user object) Get-BPAUserGroup | Remove-BPAUserGroupMember -User (Get-BPAUser "David") .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='Low')] param( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] $InputObject, [Parameter(Mandatory = $true, Position = 0)] $User ) PROCESS { foreach ($obj in $InputObject) { if ($obj.TypeName -eq "UserGroup") { $update = Get-BPAUserGroup -ID $obj.ID -BPAServer $obj.BPAServer $shouldUpdate = $false foreach ($u in $User) { if ($u.PSObject.Properties.Name -contains "TypeName") { if ($u.TypeName -ne "User") { throw "Unsupported input type '$($u.TypeName)' encountered!" } } elseif ($u -is [string]) { $tempUser = Get-BPAUser -Name $u -BPAServer $obj.BPAServer if ($tempUser) { $u = $tempUser } else { throw "User '$u' not found!" } } if ($update.UserIDs -contains $u.ID) { $update.UserIDs = @($update.UserIDs | Where-Object {$_ -ne $u.ID}) Write-Verbose "Removing user '$($u.Name)' from user group '$($obj.Name)'." } else { Write-Verbose "User '$($u.Name)' not present in user group '$($obj.Name)'." } } if (($update.UserIDs | Measure-Object).Count -eq 0) { $update.UserIDs = @() } if ($shouldUpdate) { $update | Set-BPAObject Write-Verbose "Completed removing users from user group '$($obj.Name)'." } } else { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } } } |