functions/azure/Get-AzStoredServicePrincipalCredential.ps1

function Get-AzStoredServicePrincipalCredential {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string] $TenantId,

        [Parameter(Mandatory = $true)]
        [string] $SubscriptionId,

        [Parameter(Mandatory = $true)]
        [string] $ServicePrincipalName
    )

    $targetName = "$TenantId-$SubscriptionId-$ServicePrincipalName"

    if (-not (Get-Module -ListAvailable -Name CredentialManager)) {
        Install-Module CredentialManager -Force -Scope CurrentUser
    }
    Import-Module CredentialManager -Force

    $cred = Get-StoredCredential -Target $targetName
    if (-not $cred) {
        Write-Error "Keine gespeicherten Anmeldedaten für Target '$targetName' gefunden."
        return
    }

    $securePassword = $cred.Password
    if ($securePassword -isnot [System.Security.SecureString]) {
        $securePassword = ConvertTo-SecureString $securePassword -AsPlainText -Force
    }

    return [PSCustomObject]@{
        ApplicationId = $cred.UserName
        ClientSecret  = $cred.Password
        TenantId      = $TenantId
        SubscriptionId = $SubscriptionId
        TargetName    = $targetName
        Credential    = New-Object System.Management.Automation.PSCredential ($cred.UserName, $securePassword)
    }
}