我需要从2T数据中过滤30种类型的文件,我想为get-childitem
设置变量,然后传递给-filter
以获取不同类型的文件,但它不起作用.....任何想法为什么?我的想法是,如果我使用get-childitem
30次会降低系统速度,所以我只想做一次并将输出设置为变量并用它来过滤不同类型的文件。
$a = Get-ChildItem -Recurse c:\work
$a -filter .prt | .............
请提出任何建议!
答案 0 :(得分:2)
您可以使用Where-Object
并过滤掉Name
参数。您无法在变量上使用-filter
。
此外,您需要一个通配符来过滤所有以" .prt"结尾的文件。 (如果这是你正在尝试做的事情)。
$a = Get-ChildItem -Recurse c:\work
$a | Where-Object {$_.Name -like '*.prt'} | ...
答案 1 :(得分:0)
通常最好只包含您之后的数据,而不是从较大的集合中过滤数据;考虑使用-include参数来实现这一点。例如:
#Non-recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes
#Recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes -recurse