我正在尝试在PowerShell中编写一个where子句来检查$root
是否包含ID等于$template
的basetemplate。
我可以使用$item.Template.BaseTemplates[x].ID
访问项目的基本模板。
在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}
答案 0 :(得分:2)
使用-in
过滤所有基本模板包含$template
的模板:
$filteredItems = items | Where-Object { $template -in $_.Template.BaseTemplates.ID}