2017-02-03 54 views
2

我正在嘗試在PowerShell中編寫where子句來檢查$root是否包含ID等於$template的基本模板。 我可以使用$item.Template.BaseTemplates[x].ID訪問項目上的基板模板。如何在PowerShell中編寫deep where子句

在C#中我能寫這樣的事情

items.Where(item => item.BaseTemplates.Any(template => template.ID == "id"); 

所以,我怎麼會轉化爲PowerShell的呢?

$root = Get-Item . 
$template = "{E54BB0A6-C296-4D35-BE6A-93E71E2B9F52}" 
#Write-Host $root.Template.BaseTemplates[0].ID 
$items = Get-ChildItem -recurse -Path $root.FullPath -Language * 

#how to do the same query on these $items? 
$filteredItems = items | Where-Object { $_.Template.BaseTemplates???.ID -eq $template} 

回答

2

使用-in來過濾basetemplates包含的所有模板的$template

$filteredItems = items | Where-Object { $template -in $_.Template.BaseTemplates.ID} 
+2

我不知道問陣列時,陣列實際上列出所有的值,其子女的財產。那很有意思。這很好,謝謝! – sniels

+0

不客氣。很高興看到那些不想採用PowerShell的C#技能的人;-) –

相關問題