function Get-WinUtilSelectedPackages { param( [Parameter(Mandatory = $true)] [object] $PackageList, [Parameter(Mandatory = $true)] [PackageManagers] $Preference ) if ($PackageList.count -eq 1) { Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" } } else { Invoke-WPFUIThread -ScriptBlock { Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" } } $packagesWinget = [System.Collections.ArrayList]::new() $packagesChoco = [System.Collections.ArrayList]::new() $packages = @{ ([PackageManagers]::Winget) = $packagesWinget ([PackageManagers]::Choco) = $packagesChoco } function Add-PackageId { param( [System.Collections.ArrayList]$Target, $PackageId ) if ([string]::IsNullOrWhiteSpace([string]$PackageId) -or $PackageId -eq "na") { return } if (-not $Target.Contains($PackageId)) { $null = $Target.Add($PackageId) } } foreach ($package in $PackageList) { switch ($Preference) { "Choco" { if ([string]::IsNullOrWhiteSpace([string]$package.choco) -or $package.choco -eq "na") { Add-PackageId -Target $packagesWinget -PackageId $package.winget } else { Add-PackageId -Target $packagesChoco -PackageId $package.choco } } "Winget" { Add-PackageId -Target $packagesWinget -PackageId $package.winget } } } return $packages }