Get-GraphURIRecursive--v2-0.psm1

$FunctionScriptName = "Get-GraphURIRecursive"
Write-Verbose "Import-Start| [$($FunctionScriptName)]"

function Get-GraphURIRecursive {
    <#
        .SYNOPSIS
            Get Graph URI data - recursive
        .Description
            Get recursive GraphURI data
            Uses nextLink property
        .NOTES
            AUTHOR: Ken Dobrunz // Ken.Dobrunz@Direkt-Gruppe.de | Direkt Gruppe
            WEBSITE: http://kensmagic.site
 
            LASTEDIT: 29.05.2020 - Version: 2.0
        #>

    [cmdletbinding()]
    Param(
        [Parameter(Mandatory = $true)]$uri,
        [Parameter()]$ContentType = 'application/json',
        [Parameter()]$Header = $GraphAuthHeader,
        [Parameter()][switch]$ValueOnly

    )
    process {
        $functionlist = @()
        $auth = $($Header.Authorization).replace("Bearer ", "")
        while ($null -ne $uri) {
            $response = (Invoke-RestMethod -Method GET -Uri $uri -ContentType $ContentType -Headers @{Authorization = "Bearer $($auth)" })
            $functionlist = $functionlist + $response
            if ($null -ne ($response.'@odata.nextLink')) {
                $uri = $response.'@odata.nextLink'
            }
            else {
                $uri = $null
            }
        }
        if ($ValueOnly) { return $functionlist.Value }else { return $functionlist }
    }
} #v2.0


Export-ModuleMember -Function *
Write-Verbose "Import-END| [$($FunctionScriptName)]"