Get all user properties from Microsoft graph

function getGraphDataAdvanced($authToken, $urlGraph){
    $url = $urlGraph + '&$count=true'

    $data = (Invoke-RestMethod -Headers @{
        Authorization = "Bearer $($authToken)"
        ConsistencyLevel = "eventual"
    } -Uri $url -Method Get)

    $dataList = @()
    $dataList += $data.value

    $url = $data.'@Odata.NextLink'

    while ($null -ne $url){
        Write-Warning 'Retreiving Next Page'

        $data = (Invoke-RestMethod -Headers @{
            Authorization = "Bearer $($authToken)"
            ConsistencyLevel = "eventual"
        } -Uri $url -Method Get)

        $dataList += $data.value
        $url = $data.'@Odata.NextLink'
    }
    return $dataList
}

getGraphDataAdvanced $authToken 'https://graph.microsoft.com/beta/users? $expand=extensions'

User user = await graphServiceClient
    .Users[emailId]
    .Request()
    .Select(aadUser => new
    {
        aadUser.Id,
        aadUser.UserPrincipalName,
        aadUser.DisplayName,
        aadUser.GivenName,
        aadUser.Surname,
        aadUser.City,
        aadUser.MailNickname,
        aadUser.UserType
    })
    .GetAsync()
    .ConfigureAwait(false);

As already stated by NicolasR, you must list all the fields you want to retrieve by using the "$select" parameter; if you want, instead, to retrieve the custom fields, you can either add them to the previous parameter (if you know their names) or you can use "$expand=extensions"


That's the normal behaviour of Graph API, see documentation here and this extract:

By default, only a limited set of properties are returned ( businessPhones, displayName, givenName, id, jobTitle, mail, mobilePhone, officeLocation, preferredLanguage, surname, userPrincipalName).

To return an alternative property set, you must specify the desired set of user properties using the OData $select query parameter. For example, to return displayName, givenName, and postalCode, you would use the add the following to your query $select=displayName,givenName,postalCode

You have to specify all fields in the select, as $select=* will only output the key fields in Graph API implementation.

So you will not be able to get what you ask (variable custom fields).

More info on the fields of User can be found here