WinGetInfoObject.psm1

New-Function -Name Get-WingetInfo -Description "Returns winget show * as a PowerShell Object" -ScriptBlock {
        param(
            [string]$Name
        )
        if(Test-Variable -Name "TESTY"){
            Remove-Variable -Name "TESTY" -Scope "Global"
            }
    $WingetRawOutput = winget show $Name --disable-interactivity
    $WingetRawOutput | Out-File -FilePath ".\WinGetShowOutputTemp.txt" -Force
    $outputString = Get-Content -Path ".\WinGetShowOutputTemp.txt"
    $MainHashTableObj = New-Object -TypeName pscustomobject
    $i = 1
    foreach ($splitStr in $outputString){
        if ($splitStr -match "Found"){
            $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name "Name" -Value $splitStr.Replace("Found ","") -Force
        }
        if ($splitStr -like "Description:"){
            Write-Host "IN DESC IF"
            $curIndex = $outputString.IndexOf("Description:")
            if ($outputString[$curIndex + 1] -match "Homepage:"){
                $nextIndex = $curIndex + 1
                $STRSplit = $splitStr | Split-String -RegexSeparator ":\s"
                $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name $STRSplit[0] -Value $STRSplit[1] -Force
            }
            else{
                Write-Host "IN DESC ELSE"
            if ($outputString[$curIndex + 2] -match "Homepage:"){
                $nextIndex = $curIndex + 2
            }
            if ($outputString[$curIndex + 3] -match "Homepage:"){
                $nextIndex = $curIndex + 3
            }
            if ($outputString[$curIndex + 4] -match "Homepage:"){
                $nextIndex = $curIndex + 4
            }
            if ($outputString[$curIndex + 5] -match "Homepage:"){
                $nextIndex = $curIndex + 5
            }
            if ($outputString[$curIndex + 6] -match "Homepage:"){
                $nextIndex = $curIndex + 6
            }
            if ($outputString[$curIndex + 7] -match "Homepage:"){
                $nextIndex = $curIndex + 7
            }
            if ($outputString[$curIndex + 8] -match "Homepage:"){
                $nextIndex = $curIndex + 8
            }
            if ($outputString[$curIndex + 9] -match "Homepage:"){
                $nextIndex = $curIndex + 9
            }
            if ($outputString[$curIndex + 10] -match "Homepage:"){
                $nextIndex = $curIndex + 10
            }
            for ($i=$curIndex + 1;$i -lt $nextIndex;$i++){
            $TempHold += $outputString[$i]
            }
            $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name "Description" -Value $TempHold.ToString().Replace(" ","")
        }
        }
        elseif ($splitStr -match "Tags:"){
            $curIndex = $outputString.IndexOf("Tags:")
            $nextIndex = $outputString.IndexOf("Installer:")
            for ($i=$curIndex + 1;$i -lt $nextIndex;$i++){
                $TempHold2 += ($outputString[$i].Replace(" ","") + ";")
                }
                $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name "Tags" -Value $TempHold2 -Force
        }
        elseif ($splitStr -match "Installer:"){
            $curIndex = $outputString.IndexOf("Installer:")
                $nextIndex = $curIndex + 4
            for ($i=$curIndex + 1;$i -lt $nextIndex;$i++){
                $TempHold3 += $outputString[$i]
                }
            foreach ($Temp in $TempHold3){
                $SplitTemp = $Temp | Split-String -RegexSeparator ":\s"
            $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name $SplitTemp[0].Replace(" ","") -Value $SplitTemp[1] -Force
            }
        }
        elseif ($splitStr.GetType() -notlike "System.Char") {
            $TempVer = $splitStr | Split-String -RegexSeparator ":\s"
            $MainHashTableObj | Add-Member -MemberType "NoteProperty" -Name $TempVer[0].Replace(" ","") -Value $TempVer[1] -Force -ErrorAction SilentlyContinue
        }
        }
    return $MainHashTableObj
    }
Export-ModuleMember -Function Get-WingetInfo