Scripts/Add-BPAUserGroupMember.ps1
function Add-BPAUserGroupMember { <# .SYNOPSIS Adds users to an AutoMate BPA user group. .DESCRIPTION Add-BPAUserGroupMember can add users to a user group. .PARAMETER InputObject The user group to modify. .PARAMETER User The user(s) to add to the user group. .INPUTS The following BPA object types can be modified by this function: UserGroup .EXAMPLE # Add all users to a user group Get-BPAUserGroup "All Users" | Add-BPAUserGroupMember -User * .EXAMPLE # Add a user to a user group (using user object) Get-BPAUserGroup | Add-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()] 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 ($u.BPAServer -eq $obj.BPAServer) { if ($update.UserIDs -notcontains $u.ID) { $update.UserIDs += $u.ID $shouldUpdate = $true Write-Verbose "Adding user '$($u.Name)' to user group '$($obj.Name)'." } else { Write-Verbose "User '$($u.Name)' already present in user group '$($obj.Name)'." } } else { Write-Warning "User '$($u.Name)' on server $($u.BPAServer) can not be added to user group '$($obj.Name)' on server $($obj.BPAServer)." } } if ($shouldUpdate) { $update | Set-BPAObject Write-Verbose "Completed adding users to user group '$($obj.Name)'." } } else { Write-Error -Message "Unsupported input type '$($obj.TypeName)' encountered!" -TargetObject $obj } } } } |