Functions/Groups/Get-RAGroup.ps1
function Get-RAGroup { [CmdletBinding(DefaultParameterSetName = 'BySearch')] param ( [Parameter( ParameterSetName = 'BySearch', HelpMessage = 'The maximum number of entries to return' )] [int]$Limit = 100, [Parameter( ParameterSetName = 'BySearch', HelpMessage = 'The number of entries to skip' )] [int]$Offset = 0, [Parameter( ParameterSetName = 'BySearch', HelpMessage = 'The field in which to perform the search' )] [ValidateSet('ALL', 'NAME', 'DESCRIPTION')] [string]$SearchIn = 'ALL', [Parameter( ParameterSetName = 'BySearch', HelpMessage = 'The string to use in the search' )] [SupportsWildcards()] [string]$searchString, [Parameter( Mandatory, ParameterSetName = 'ByGroupId', HelpMessage = 'The unique ID of the VendorLDAP group' )] [string]$GroupId ) begin { $url = "https://$($Script:ApiURL)/v2-edge/groups" } process { switch ($PSCmdlet.ParameterSetName) { 'BySearch' { $query = [System.Collections.ArrayList]@() $query.Add("limit=$Limit") | Out-Null $query.Add("offset=$Offset") | Out-Null Switch ($PSBoundParameters.Keys) { 'searchIn' { $query.Add("searchIn=$SearchIn") | Out-Null } 'searchString' { $query.Add("searchString=$SearchString") | Out-Null } } $querystring = $query -join '&' if ($null -ne $querystring) { $url = -join ($url, '?', $querystring) } Write-Verbose $url $returnProperty = 'groups' } 'ByGroupId' { $url = "$url/$GroupId" } Default {} } $result = Invoke-RestMethod -Method Get -Uri $url -WebSession $Script:WebSession } end { if ($null -ne $returnProperty) { Write-Output -InputObject $result | Select-Object -ExpandProperty $returnProperty } else { Write-Output -InputObject $result } } } |