如何在 PowerShell 中编写深度 where 子句
How to write a deep where clause in PowerShell
我正在尝试在 PowerShell 中编写一个 where 子句来检查 $root
是否包含 ID 等于 $template
的基本模板。
我可以使用 $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}
使用 -in
过滤所有包含您的 $template
:
的模板
$filteredItems = items | Where-Object { $template -in $_.Template.BaseTemplates.ID}
我正在尝试在 PowerShell 中编写一个 where 子句来检查 $root
是否包含 ID 等于 $template
的基本模板。
我可以使用 $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}
使用 -in
过滤所有包含您的 $template
:
$filteredItems = items | Where-Object { $template -in $_.Template.BaseTemplates.ID}