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

时间:2015-12-21 13:54:06

标签: powershell pipeline

我正在查询高度结构化的文件系统。我需要查看树的第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级条目的数组。

1 个答案:

答案 0 :(得分:2)

不确定。只需添加

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

Select-Object之后。