powershell设置变量然后传递给过滤器?

时间:2014-03-27 19:05:19

标签: powershell

我需要从2T数据中过滤30种类型的文件,我想为get-childitem设置变量,然后传递给-filter以获取不同类型的文件,但它不起作用.....任何想法为什么?我的想法是,如果我使用get-childitem 30次会降低系统速度,所以我只想做一次并将输出设置为变量并用它来过滤不同类型的文件。

$a = Get-ChildItem -Recurse c:\work 
$a -filter .prt | .............  

请提出任何建议!

2 个答案:

答案 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