Private/Resolve-KeyVaultSecret.ps1

#Requires -Version 7.0
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

function Resolve-KeyVaultSecret {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $false)]
        [string]$SecretId,

        [Parameter(Mandatory = $false)]
        [string]$VaultName = 'kv-hcs-vault-01',

        [Parameter(Mandatory = $false)]
        [string]$SecretName
    )

    try {
        if ($SecretId) {
            $secretValue = az keyvault secret show --id $SecretId --query value -o tsv 2>$null
            if ($LASTEXITCODE -eq 0 -and $secretValue) {
                return [pscustomobject]@{
                    Source   = 'KeyVault'
                    SecretId = $SecretId
                    Password = $secretValue.Trim()
                }
            }
        }
        elseif ($VaultName -and $SecretName) {
            $secretValue = az keyvault secret show --vault-name $VaultName --name $SecretName --query value -o tsv 2>$null
            if ($LASTEXITCODE -eq 0 -and $secretValue) {
                return [pscustomobject]@{
                    Source     = 'KeyVault'
                    VaultName  = $VaultName
                    SecretName = $SecretName
                    Password   = $secretValue.Trim()
                }
            }
        }
    }
    catch {
        Write-Verbose "Key Vault secret retrieval failed: $_"
    }

    return $null
}