Search code examples
powershelljoinpowershell-cmdlet

Join two results in Powershell


I've got two CMDlets that return lists of objects. One returns objects of the type SPSolution, which contains the property Id, the other returns objects of the type SPFeature with a property SolutionId.

Now I want to join/merge this data something like this:

$f = Get-Feature
$s = Get-Solution
$result = <JOIN> $f $s
          <ON> $f.SolutionId = $s.Id
          <SELECT> FeatureName = $f.DisplayName, SolutionName = $s.Name

Solution

  • It's not efficient, and it assumes PowerShell 2 but it should do the job:

    $solutions = Get-Solution
    
    foreach ($f in Get-Feature) {
    
        $filteredSolutions = $solutions |
            where-object { $_.Id -eq $f.SolutionId }
    
        foreach ($s in $filteredSolutions) {
            new-object PSObject -prop @{
                FeatureName = $f.DisplayName
                SolutionName = $s.Name
            }
        }
    }
    

    Note that I don't have SharePoint installed so I'm afraid that I can't test this!