function Get-WinUtilPackageLogSummary { param( [Parameter(Mandatory = $true)] [object[]]$Packages, [Parameter(Mandatory = $true)] [string]$Preference ) @($Packages | ForEach-Object { $package = $_ $packageName = @($package.Name, $package.Description, $package.winget, $package.choco) | Where-Object { -not [string]::IsNullOrWhiteSpace([string]$_) -and $_ -ne "na" } | Select-Object -First 1 if ([string]::IsNullOrWhiteSpace([string]$packageName)) { $packageName = "Unknown package" } if ($Preference -eq "Choco" -and -not [string]::IsNullOrWhiteSpace([string]$package.choco) -and $package.choco -ne "na") { "$packageName (choco: $($package.choco))" } elseif (-not [string]::IsNullOrWhiteSpace([string]$package.winget) -and $package.winget -ne "na") { "$packageName (winget: $($package.winget))" } else { "$packageName (no package id)" } }) }