Public/Get-midPointRole.ps1

function Get-midPointRole {
    <#
    .SYNOPSIS
    Gets midPoint roles.

    .DESCRIPTION
    Gets roles by name, by OID, by an Axiom query filter, or all roles.
    -Name returns nothing when no role has that name; -Oid stops with an error when the OID does not exist.

    .PARAMETER Name
    The exact role name.

    .PARAMETER Oid
    The role's OID.

    .PARAMETER Filter
    An Axiom query filter, e.g. 'name startsWith "App "'.

    .PARAMETER All
    Returns all roles.

    .PARAMETER MaxResults
    The maximum number of roles returned by -Filter or -All.

    .EXAMPLE
    Get-midPointRole 'Some Role'

    .EXAMPLE
    Get-midPointRole -Filter 'name startsWith "App "' | Select-Object Name, Oid
    #>

    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSReviewUnusedParameter', 'All', Justification = 'Selects the parameter set.')]
    [CmdletBinding(DefaultParameterSetName = 'Name')]
    [OutputType('midPointTools.Role')]
    param(
        [Parameter(Mandatory, Position = 0, ParameterSetName = 'Name', ValueFromPipeline)]
        [string[]] $Name,

        [Parameter(Mandatory, ParameterSetName = 'Oid', ValueFromPipelineByPropertyName)]
        [string[]] $Oid,

        [Parameter(Mandatory, ParameterSetName = 'Filter')]
        [string] $Filter,

        [Parameter(Mandatory, ParameterSetName = 'All')]
        [switch] $All,

        [Parameter(ParameterSetName = 'Filter')]
        [Parameter(ParameterSetName = 'All')]
        [int] $MaxResults
    )

    process {
        switch ($PSCmdlet.ParameterSetName) {
            'Name' {
                foreach ($n in $Name) {
                    Find-midPointObject -Type roles -Filter ('name = {0}' -f (ConvertTo-midPointAxiomString $n)) | ConvertTo-midPointRoleObject
                }
            }
            'Oid' {
                foreach ($o in $Oid) { Get-midPointObjectByOid -Type roles -Oid $o | ConvertTo-midPointRoleObject }
            }
            'Filter' { Find-midPointObject -Type roles -Filter $Filter -MaxResults $MaxResults | ConvertTo-midPointRoleObject }
            'All' { Find-midPointObject -Type roles -MaxResults $MaxResults | ConvertTo-midPointRoleObject }
        }
    }
}