Private/Get-EAMUsers.ps1

Function Get-EAMUsers {
    <#
        .SYNOPSIS
        Get the users from Entra
 
        .DESCRIPTION
        Get the users from Entra
 
        .PARAMETER ParameterSetName
        The parameter set to use.
 
        .PARAMETER GroupId
        The group ID to use.
 
        .EXAMPLE
        Get-EAMUsers -ParameterSetName "All"
 
        .EXAMPLE
        Get-EAMUsers -ParameterSetName "Group" -GroupId "12345678-1234-1234-1234-123456789012"
 
        .INPUTS
        System.String
 
        .OUTPUTS
        System.Object
     
    #>

    [CmdletBinding(DefaultParameterSetName="AllUsers")]
    [OutputType([System.Object])]
    param (
        [Parameter(Mandatory=$true,ParameterSetName="AllUsers")]
        [Parameter(Mandatory=$true,ParameterSetName="Group")]
        [Parameter(Mandatory=$true,ParameterSetName="Filter")]
        [string]$ParameterSetName,
        [Parameter(Mandatory=$false,ParameterSetName="Group")]
        [string]$GroupId,
        [Parameter(Mandatory=$false,ParameterSetName="Filter")]
        [string]$Filter
    
    )
    If ($parameterSetName -eq "Group" -and !$groupId) {
        throw "GroupId is required when using the Group parameter set"
    
    }
    switch ($parameterSetName) {
        "AllUsers" { 
            return Get-EAMUser -All 
        
        } "Group" { 
            return Get-EAMGroupMember -GroupId $groupId -ExcludeGroups -Recursive
        
        } "Filter" { 
            return Get-EAMUser -Filter $filter
        
        } default {
            throw "Invalid parameter set name: $parameterSetName"
        
        }
    }
}