Private/Get-DeviceManagementPolicy.ps1

Function Get-DeviceManagementPolicy {
    [cmdletbinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        $AuthToken,

        [Parameter(Mandatory = $true)]
        [ValidateSet('ADMX', 'AutoPilot', 'Compliance', 'Configuration','EndpointSecurity', 'EnrollmentStatus','FeatureUpdate', 'ProactiveRemediation', 'Script')]
        [string]$ManagementType

    )
    $itemType = "$ManagementType Policies"
    $filter = $null
    $expand = '?$expand=Assignments'
    switch ($ManagementType) {
        "ADMX" {
            $graphEndpoint = 'deviceManagement/groupPolicyConfigurations'
            break
        }
        "AutoPilot" {
            $graphEndpoint = 'deviceManagement/windowsAutopilotDeploymentProfiles'
            break
        }
        "Compliance" {
            $graphEndpoint = 'deviceManagement/deviceCompliancePolicies'
            break
        }
        "Configuration" {
            $graphEndpoint = 'deviceManagement/deviceConfigurations'
            break
        }
        "EndpointSecurity" {
            $graphEndpoint = 'deviceManagement/intents'
            $expand = '?$expand=Assignments,Settings($select=id,definitionId,valueJson)'
            break
        }
        "EnrollmentStatus" {
            $graphEndpoint = 'deviceManagement/deviceEnrollmentConfigurations'
            $filter = "?`$filter=isOf('microsoft.graph.windows10EnrollmentCompletionPageConfiguration')"
            break
        }
        "FeatureUpdate" {
            $graphEndpoint = 'deviceManagement/windowsFeatureUpdateProfiles'
            break
        }
        "ProactiveRemediation" {
            $graphEndpoint = "deviceManagement/deviceHealthScripts"
            $itemType = "Proactive Remediation Scripts"
            break
        }
        "Script" {
            $graphEndpoint = 'deviceManagement/deviceManagementScripts'
            $itemType = "PowerShell Scripts"
            break
        }
    }
    $graphApiVersion = "Beta"
    Write-Verbose "`nResource: $graphEndpoint"
    $uri = "https://graph.microsoft.com/$graphApiVersion/$($graphEndpoint)"
    try {
        $response = (Invoke-RestMethod -Method Get -Uri "$uri$filter" -Headers $AuthToken -ContentType "application/json").value | ForEach-Object {
            Invoke-RestMethod -Method Get -Uri "$uri/$($_.id)$expand" -Headers $AuthToken -ContentType "application/json"
        }
        Write-Host "$itemType`: " -NoNewline -ForegroundColor Cyan
        write-host "$($response.count) $(($response.count -eq 1) ? "item" : "items") found." -ForegroundColor Green
        return $response
    }
    catch {
        $ex = $_.Exception
        Write-Warning $ex
        break
    }
}