Public/Get-CwmMember.ps1

function Get-CwmMember {
    [CmdletBinding()]

    Param (
        [Parameter(Mandatory = $False)]
        [int]$MemberId,

        [Parameter(Mandatory = $False)]
        [string]$Identifier,

        [Parameter(Mandatory = $False)]
        [string]$PageSize = 1000,

        [Parameter(Mandatory = $False)]
        [switch]$ShowAll,

        [Parameter(Mandatory = $false)]
        [string]$AuthString = $global:CwAuthString
    )

    $VerbosePrefix = "Get-CwmActivity:"

    $Uri = "https://api-na.myconnectwise.net/"
    $Uri += 'v4_6_Release/apis/3.0/'
    $Uri += "system/members"

    $QueryParams = @{}
    $QueryParams.page = 1
    $QueryParams.pageSize = $PageSize

    $Conditions = @{}

    if ($MemberId) {
        $Conditions.'id' = $MemberId
    }

    if ($Identifier) {
        $Conditions.'identifier' = $Identifier
    }

    $ApiParams = @{}
    $ApiParams.Uri = $Uri
    $ApiParams.AuthString = $AuthString
    $ApiParams.QueryParams = $QueryParams
    if ($Conditions.Count -gt 0) {
        $ApiParams.Conditions = $Conditions
    }

    $ReturnValue = Invoke-CwmApiCall @ApiParams
    if ($ShowAll) {
        $KeepGoing = $true
        Write-Verbose ($QueryParams.page * $PageSize)
        while ($ReturnValue.Count -eq ($QueryParams.page * $PageSize)) {
            $QueryParams.page++
            $ApiParams.QueryParams = $QueryParams
            $MoreValues = Invoke-CwmApiCall @ApiParams
            $ReturnValue += $MoreValues
        }
    }

    $ReturnObject = @()
    if ($ReturnValue) {
        foreach ($r in $ReturnValue) {
            $ThisObject = New-Object Member
            $ThisObject.MemberId = $r.id
            $ThisObject.FullData = $r
            $ThisObject.FirstName = $r.firstName
            $ThisObject.LastName = $r.lastName
            $ThisObject.Identifier = $r.identifier
            $ReturnObject += $ThisObject
        }
    } else {
        $ReturnObject = $false
    }

    $ReturnObject
}