我可以使用管道将其折叠成一行代码吗?
Can I collapse this into a single line of code using the 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 个级别的路径?我知道这是微不足道的,但我正在处理大量数据我觉得好像在第一条语句中将其作为过滤器添加到管道中比将所有目录转储到一个数组中然后重新处理该数组更有效到 select 14 级条目。
当然可以。只需添加
... | Where-Object { @($_ -split '\').Count -eq 14 }
在 Select-Object
.
之后
我正在查询一个高度结构化的文件系统。我需要查看树的第 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 个级别的路径?我知道这是微不足道的,但我正在处理大量数据我觉得好像在第一条语句中将其作为过滤器添加到管道中比将所有目录转储到一个数组中然后重新处理该数组更有效到 select 14 级条目。
当然可以。只需添加
... | Where-Object { @($_ -split '\').Count -eq 14 }
在 Select-Object
.