本来以为 Selet-Object 应该能发挥作用,但看过帮助文档之后发现对于筛选来说它只能执行比较简单的操作(First, Last, Unique, Skip, and Index)。
目前我的方法是用%,获取文件列表之后,根据后缀属性用if判断,然后再直接返回。
$FileList = $Dir | Get-ChildItem -Recurse -File
$PyFileList = $FileList | ForEach-Object { if ($_.Extension -eq '.py') { $_ } }
这种办法目前用起来也还可以,但感觉用if(){},总是不 PowerShellic 。
那么针对这种需求的最佳实践是什么?
高度怀疑应该是有更好的方式的,如果没有的话自己写个 Cmdlet,倒是不错,直接传递脚本块儿就根据布尔值返回对象,从而免去各种括号。这个需求是高频的。