private/Get-WinGetOuput.ps1

Function Get-WinGetOutput{
    Param(
        $Content = (Get-content $env:temp\winget.stdout)
    )

    $obj = New-Object pscustomobject
    #grabe some known status messages
    $AppFailedCode = $Content | Select -last 2 | Select-String -Pattern '(?<=Installer failed with exit code\: ).+' | Select -Expand Matches | select -expand Value
    $AppUpgradeNotFound = $Content | Select -last 2 | Select-String -Pattern 'No available upgrade found' | Select -Expand Matches | select -expand Value
    $AppVerUnknown = $Content | Select -last 2 | Select-String -Pattern 'version numbers that cannot be determined' | Select -Expand Matches | select -expand Value
    $AppNotFound = $Content | Select -last 2 | Select-String -Pattern 'No installed package found' | Select -Expand Matches | select -expand Value
    $Status = ($Content -split '`n'| Select -last 2) -join '.'

    If($AppFailedCode.Length -gt 0){
        $obj | Add-Member -MemberType NoteProperty -Name Failed -Value $True -Force
        $obj | Add-Member -MemberType NoteProperty -Name FailedCode -Value $AppFailedCode -Force
    }Else{
        $obj | Add-Member -MemberType NoteProperty -Name Failed -Value $False -Force
        $obj | Add-Member -MemberType NoteProperty -Name FailedCode -Value 0 -Force
    }
    
    If($AppUpgradeNotFound.Length -gt 0){
        $obj | Add-Member -MemberType NoteProperty -Name UpgradeNotFound -Value $True -Force 
    }Else{
        $obj | Add-Member -MemberType NoteProperty -Name UpgradeNotFound -Value $False -Force
    }

    If($AppNotFound.Length -gt 0){
        $obj | Add-Member -MemberType NoteProperty -Name AppNotFound -Value $True -Force 
    }Else{
        $obj | Add-Member -MemberType NoteProperty -Name AppNotFound -Value $False -Force
    }

    If($AppVerUnknown.Length -gt 0){
        $obj | Add-Member -MemberType NoteProperty -Name VersionUnknown -Value $True -Force 
    }Else{
        $obj | Add-Member -MemberType NoteProperty -Name VersionUnknown -Value $False -Force
    }

    If($obj.Failed -or $obj.UpgradeNotFound -or $obj.VersionUnknown -or $obj.AppNotFound){
        $obj | Add-Member -MemberType NoteProperty -Name AttemptRetry -Value $True -Force 
    }Else{
        $obj | Add-Member -MemberType NoteProperty -Name AttemptRetry -Value $False -Force
    }

    $obj | Add-Member -MemberType NoteProperty -Name LastStatus -Value $Status -Force
    
    return $obj
}