Public/Nuget/Find-XpandPackage.ps1

function Find-XpandPackage {
    [CmdletBinding()]
    param (
        [parameter(Mandatory, ValueFromPipeline,Position=0)]
        [string]$Name,
        [parameter(Position=1)]
        [ValidateSet("All", "Release", "Lab")]
        [string]$PackageSource = "Release",
        [switch]$AllVersions,
        [int]$First=3
    )
    
    begin {
    }
    
    process {
        
        Write-Verbose ($fArgs|Out-String)
        $nuget=(Get-NugetPath)
        if ($PackageSource -eq "Lab"){
            $p=& ($nuget) list $name -Source (Get-PackageFeed -Xpand) 
        }
        elseif ($PackageSource -eq "All"){
            $p=(Find-XpandPackage -Name $Name -PackageSource Lab)+(Find-XpandPackage -Name $Name -PackageSource Release)
        }
        elseif ($PackageSource -eq "Release"){
            $p=& $nuget list author:eXpandFramework -Source (Get-PackageFeed -Nuget) |Where-Object{$_ -like $name}
        }
        $p|ConvertTo-PackageObject
        return
        (Find-Package "*$name*" -Source (Get-PackageFeed -xpand) -ProviderName Nuget|Invoke-Parallel -script{
            $sources=Get-PackageSource|Where-Object{$_.ProviderName -eq "Nuget"}    
            if ($PackageSource -eq "Release"){
                $sources=$sources|Where-Object{$_.Location -match (Get-PackageFeed -Nuget) }
            }
            elseif ($PackageSource -eq "Lab"){
                Find-Package "*$name*" -Source (Get-PackageFeed -xpand) -ProviderName Nuget
            }
            $packageName=$_.Name
            $sources|ForEach-Object{
                [PSCustomObject]@{
                    Name         = $packageName
                    ProviderName = "Nuget"
                    AllVersions=$AllVersions
                    ErrorAction="SilentlyContinue"
                    Source=$_.Name
                }
            }
        })|Invoke-Parallel -script{
            Find-Package $_.Name -Source $_.Source
            
        }
    }
    
    end {
    }
}