Private/Output/Get-AvmFailureDetail.ps1

function Get-AvmFailureDetail {
    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)]
        [object] $Result
    )

    Set-StrictMode -Version 3.0

    $stepsProperty = $Result.PSObject.Properties['Steps']
    if ($null -ne $stepsProperty) {
        foreach ($step in @($stepsProperty.Value)) {
            if ([string]$step.Status -notin @('fail', 'error')) {
                continue
            }
            $errorProperty = $step.PSObject.Properties['Error']
            if ($null -ne $errorProperty -and -not [string]::IsNullOrWhiteSpace([string]$errorProperty.Value)) {
                return "Step '$($step.Step)': $($errorProperty.Value)"
            }
            $resultProperty = $step.PSObject.Properties['Result']
            if ($null -ne $resultProperty -and $null -ne $resultProperty.Value) {
                $issueLines = @(ConvertTo-AvmIssueLine -Result $resultProperty.Value)
                if ($issueLines.Count -gt 0) {
                    return "Step '$($step.Step)': $($issueLines[0])"
                }
            }
            return "Step '$($step.Step)' reported Status '$($step.Status)'."
        }
    }

    $issueLines = @(ConvertTo-AvmIssueLine -Result $Result)
    if ($issueLines.Count -gt 0) {
        return $issueLines[0]
    }

    return ''
}