functions/Get-GroupMembership.ps1
function Get-GroupMembership { <# .SYNOPSIS Gets Group Memberships .DESCRIPTION Gets Group Memberships .EXAMPLE PS C:\> Get-ZendeskGroupMembership Gets all group memberships. .EXAMPLE PS C:\> Get-ZendeskGroupMembership -Id 1 Gets group membership with id 1 .EXAMPLE PS C:\> Get-ZendeskGroupMembership -Id 1 -UserId 2 Gets group membership with id 1 for user with id 2 .EXAMPLE PS C:\> Get-ZendeskGroupMembership -UserId 2 Gets group memberships for user with id 2 .EXAMPLE PS C:\> Get-ZendeskGroupMembership -GroupId 3 Gets group memberships for group with id 3 .EXAMPLE PS C:\> Get-ZendeskGroupMembership -Assignable Gets assignable group memberships .EXAMPLE PS C:\> Get-ZendeskGroupMembership -GroupId 3 -Assignable Gets assignable group memberships for group with id 3 .EXAMPLE PS C:\> Get-ZendeskGroupMembership -Id 1 -SideLoad 'users', 'groups' Gets group membership with id 1 as well as the user and group for that membership #> [OutputType([PSCustomObject])] [CmdletBinding(DefaultParameterSetName = 'Default')] Param ( # Unique Id of the group membership to retrieve [Parameter(Mandatory = $true, ParameterSetName = 'Id')] [Parameter(Mandatory = $false, ParameterSetName = 'UserId')] [ValidateRange(1, [Int64]::MaxValue)] [Int64] $Id, # Unique Id of the user to get group memberships for [Parameter(Mandatory = $true, ParameterSetName = 'UserId')] [ValidateRange(1, [Int64]::MaxValue)] [Int64] $UserId, # Unique Id of the group to get membersips for [Parameter(Mandatory = $true, ParameterSetName = 'GroupId')] [ValidateRange(1, [Int64]::MaxValue)] [Int64] $GroupId, # Only retrieve assignable memberships [Parameter(Mandatory = $false, ParameterSetName = 'GroupId')] [Parameter(Mandatory = $false, ParameterSetName = 'Default')] [Switch] $Assignable, # Entities to sideload in the request [Parameter(Mandatory = $false)] [ValidateNotNullOrEmpty()] [ValidateSet( 'groups', 'users' )] [String[]] $SideLoad, # Zendesk Connection Context from `Get-ZendeskConnection` [Parameter(Mandatory = $false)] [PSTypeName('ZendeskContext')] [PSCustomObject] $Context = $null ) Assert-IsAgent -Context $Context $key = 'group_memberships' switch ($PSCMDlet.ParameterSetName) { 'Id' { $path = "/api/v2/group_memberships/$Id.json" $key = 'group_membership' } 'UserId' { if ($PSBoundParameters.ContainsKey('Id')) { $path = "/api/v2/users/$UserId/group_memberships/$Id.json" } else { $path = "/api/v2/users/$UserId/group_memberships.json" } } 'GroupId' { if ($Assignable) { $path = "/api/v2/groups/$GroupId/memberships/assignable.json" } else { $path = "/api/v2/groups/$GroupId/memberships.json" } } default { if ($Assignable) { $path = '/api/v2/group_memberships/assignable.json' } else { $path = '/api/v2/group_memberships.json' } } } $params = @{ Context = $Context Path = $path Verbose = $VerbosePreference } if ($PSBoundParameters.ContainsKey('SideLoad')) { $params.SideLoad = $SideLoad } $result = Invoke-Method @params if (-not $PSBoundParameters.ContainsKey('SideLoad')) { $result | Select-Object -Expand $key } } |