Functions/Groups/Get-AleroGroups.ps1
function Get-AleroGroups { [CmdletBinding(DefaultParameterSetName='BySearch')] param ( [Parameter( Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='ByGroupId', HelpMessage='Token to authenticate to Alero.' )] [Parameter( Mandatory, ValueFromPipelineByPropertyName, ParameterSetName='BySearch', HelpMessage='Token to authenticate to Alero.' )] [System.Security.SecureString]$Authn, [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( Mandatory, ParameterSetName='BySearch', HelpMessage='The string to use in the search' )] [SupportsWildcards()] [string]$Search, [Parameter( Mandatory, ParameterSetName='ByGroupId', HelpMessage='The unique ID of the AleroLDAP group' )] [string]$GroupId ) begin { } process { switch ($PSCmdlet.ParameterSetName) { 'BySearch' { $url = "https://api.alero.io/v2-edge/groups?limit=$Limit&offset=$Offset&searchIn=$SearchIn&searchString=$Search" } 'ByGroupId' { $url = "https://api.alero.io/v2-edge/groups/$GroupId" } Default {} } $result = Invoke-RestMethod -Method Get -Uri $url -Authentication Bearer -Token $Authn } end { Write-Output -InputObject $result Remove-Variable -Name result } } |