functions/azure/Get-KnownResourceAppId.ps1

function Get-KnownResourceAppId {
    [CmdletBinding(DefaultParameterSetName = 'All')]
    param (
        [Parameter(ParameterSetName = 'Single')]
        [switch]$MicrosoftGraph,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$ExchangeOnline,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$SharePoint,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$AzureKeyVault,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$AzureStorage,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$AzureResourceManager,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$AzureServiceManagement,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$Intune,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$PowerBI,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$PowerApps,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$DynamicsCRM,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$DynamicsERP,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$SkypeForBusiness,

        [Parameter(ParameterSetName = 'Single')]
        [switch]$Yammer,

        [Parameter(ParameterSetName = 'Single')]
        [string]$Name,

        [Parameter(ParameterSetName = 'All')]
        [switch]$All
    )

    $knownAppIds = @{
        # Microsoft Graph
        'MicrosoftGraph'           = [guid]'00000003-0000-0000-c000-000000000000'

        # Microsoft APIs
        'ExchangeOnline'           = [guid]'00000002-0000-0ff1-ce00-000000000000'
        'SharePoint'               = [guid]'00000003-0000-0ff1-ce00-000000000000'
        'SkypeForBusiness'         = [guid]'00000004-0000-0ff1-ce00-000000000000'

        # Dynamics 365
        'DynamicsCRM'              = [guid]'00000007-0000-0000-c000-000000000000'
        'DynamicsERP'              = [guid]'00000015-0000-0000-c000-000000000000'

        # Power Platform
        'PowerBI'                  = [guid]'00000009-0000-0000-c000-000000000000'
        'PowerApps'                = [guid]'475225e7-5e1f-426f-8b1c-1c0c38d4e7f4'

        # Azure Services (GUID-basiert)
        'AzureResourceManager'     = [guid]'797f4846-ba00-4fd7-ba43-dac1f8f63013'
        'AzureServiceManagement'   = [guid]'aa7e904c-e6a5-4e2b-9f8f-b7e3f90b31c1'  # classic (wenn explizit)
        'AzureDataLake'            = [guid]'abf4847e-9378-4c52-a58e-a8ff5e4a29d1'

        # URL-basierte Ressourcen
        'AzureKeyVault'            = [uri]'https://vault.azure.net'
        'AzureStorage'             = [uri]'https://storage.azure.com/'
        'AzureServiceBus'          = [uri]'https://servicebus.azure.net/'
        'AzureSQL'                 = [uri]'https://database.windows.net/'
        'AzureBatch'               = [uri]'https://batch.core.windows.net/'
        'AzureAutomation'          = [uri]'https://management.core.windows.net/'
        'AzureManagement'          = [uri]'https://management.core.windows.net/'

        # Spezialfälle / Legacy
        'Intune'                   = [guid]'d4ebce55-015a-49b5-a083-c84d1797ae8c'
        'Yammer'                   = [guid]'00000005-0000-0000-c000-000000000000'
        'Office365ManagementAPI'   = [guid]'c5393580-f805-4401-95e8-94b7a6ef2fc2'
    }

    switch ($PSCmdlet.ParameterSetName) {
        'Single' {
            if ($MicrosoftGraph)         { return $knownAppIds['MicrosoftGraph'] }
            elseif ($ExchangeOnline)     { return $knownAppIds['ExchangeOnline'] }
            elseif ($SharePoint)         { return $knownAppIds['SharePoint'] }
            elseif ($AzureKeyVault)      { return $knownAppIds['AzureKeyVault'] }
            elseif ($AzureStorage)       { return $knownAppIds['AzureStorage'] }
            elseif ($AzureResourceManager){ return $knownAppIds['AzureResourceManager'] }
            elseif ($AzureServiceManagement){ return $knownAppIds['AzureServiceManagement'] }
            elseif ($Intune)             { return $knownAppIds['Intune'] }
            elseif ($PowerBI)            { return $knownAppIds['PowerBI'] }
            elseif ($PowerApps)          { return $knownAppIds['PowerApps'] }
            elseif ($DynamicsCRM)        { return $knownAppIds['DynamicsCRM'] }
            elseif ($DynamicsERP)        { return $knownAppIds['DynamicsERP'] }
            elseif ($SkypeForBusiness)   { return $knownAppIds['SkypeForBusiness'] }
            elseif ($Yammer)             { return $knownAppIds['Yammer'] }
            elseif ($Name)               { return $knownAppIds[$Name] }
        }
        'All' {
            return $knownAppIds
        }
    }

    Write-Warning "Keine bekannte Ressource ausgewählt oder Name nicht gefunden."
    return $null
}