Powershell 我可以使用管道将其折叠成一行代码吗?

Powershell 我可以使用管道将其折叠成一行代码吗?,powershell,pipeline,Powershell,Pipeline,我正在查询一个高度结构化的文件系统。我需要看看树的第14层的节点。根据其他一些关于查询文件系统的帖子和我自己的研究,我得出了以下结论: $lines = Get-ChildItem "\\ad1hfdahp001\D$\software\anthill\var\artifacts" -Recurse -Force -EA SilentlyContinue | Where-Object { $_ -is [System.IO.DirectoryInfo] } |

我正在查询一个高度结构化的文件系统。我需要看看树的第14层的节点。根据其他一些关于查询文件系统的帖子和我自己的研究,我得出了以下结论:

$lines = Get-ChildItem "\\ad1hfdahp001\D$\software\anthill\var\artifacts" -Recurse -Force -EA SilentlyContinue |
         Where-Object { $_ -is [System.IO.DirectoryInfo] } |
         Select -ExpandProperty FullName

$paths=@()
foreach ($d in $lines) {
    $a = $d -split "\\"
    if ($a.count -eq 14) {$paths += $d}
}
是否有方法将
foreach
块中的代码(或部分代码)添加到第一个语句中,以便
$lines
仅包含14个级别的路径?我知道这很简单,但我正在处理大量数据,我觉得在第一条语句中将其作为过滤器添加到管道中比将所有目录转储到一个数组中,然后重新处理该数组以选择14级条目要有效得多。

当然。简单地加上

... | Where-Object { @($_ -split '\\').Count -eq 14 }

Select Object

IIRC
foreach
foreach Object
Get Item'\\ad1hfdahp001\D$\software\anthill\var\artifacts\*\*\*\*\*\*\*\*\*\*\*\*\*\*'-Force
这回答了我提出的具体问题,但是@PetSerAI提供了一种更直接的方法,消除了对过滤器的要求。我希望这是一个答案,而不是一个评论,我希望我可以标记这两个答案。多谢!!