У меня есть два CMDlets, которые возвращают списки объектов. Каждый возвращает объекты типа SPSolution, который содержит свойство Id, другие объекты возвратов типа SPFeature со свойством SolutionId.
Теперь я хочу присоединиться/объединить к этим данным что-то вроде этого:
$f = Get-Feature
$s = Get-Solution
$result = <JOIN> $f $s
<ON> $f.SolutionId = $s.Id
<SELECT> FeatureName = $f.DisplayName, SolutionName = $s.Name
Это неэффективно и предполагает наличие PowerShell 2, но должен выполнить свою работу:
$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
}
}
}
Обратите внимание, что у меня не установлен SharePoint, поэтому я боюсь, что не смогу это проверить!
Вот однострочник, который должен помочь (полагается на вложенные конвейеры):
Get-Feature | % {$f = $_; Get-Solution | ? {$f.SolutionId -eq $_.Id} |
Select Name,@{n='FeatureName';e={$f.DisplayName}}}