powershell设置变量,然后传递到筛选器?

powershell设置变量,然后传递到筛选器?,powershell,Powershell,我需要从2T的数据中筛选30种类型的文件,我想为get childitem设置一个变量,然后为不同类型的文件传递到-filter,但它不起作用……知道为什么吗?我的想法是,如果我使用get childitem30次,它将降低系统的速度,因此我只想执行一次,将输出设置为变量,并使用它过滤不同类型的文件 $a = Get-ChildItem -Recurse c:\work $a -filter .prt | ............. 请给我任何建议 您可以使用Where Object并过

我需要从2T的数据中筛选30种类型的文件,我想为
get childitem
设置一个变量,然后为不同类型的文件传递到
-filter
,但它不起作用……知道为什么吗?我的想法是,如果我使用
get childitem
30次,它将降低系统的速度,因此我只想执行一次,将输出设置为变量,并使用它过滤不同类型的文件

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

请给我任何建议

您可以使用
Where Object
并过滤掉
Name
参数。不能对变量使用
-filter

此外,您还需要一个通配符来过滤所有以“.prt”结尾的文件(如果您正试图这样做的话)


通常最好只包含您要查找的数据,而不是从更大的集合中筛选数据;考虑使用-IOPE参数来实现这一点。例如:

#Non-recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes

#Recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes -recurse

我建议你每次只问一个特定的问题。将一系列问题放到一个线程中会产生与标题不匹配的问题,使其他人以后很难搜索这些问题,也很难为您提供涵盖所有问题的全面答案。在我的脚本中,我需要从2T数据中筛选30种类型的文件,如果我将
-filter
添加到
get childitem
,那么我需要
get childitem
30次,这将降低系统速度。其思想是只获取一次
get childitem
的结果作为变量供以后使用。由于
-filter
不能用于变量,因此最好将
get childitem
输出到txt文件,然后从那里进行搜索。有更好的主意吗?在我发布后,我意识到答案是不够的。为了解决这个问题,它从年起进行了更新。感谢您的回答,我尝试了您的方法,处理每种类型的文件比单独筛选需要更长的时间,并且在比较了2种方法的结果后,结果不准确,-在Get ChildItem上直接筛选是最快的,因为进行筛选的是文件系统。但这种过滤方法也比cmdlet提供的方法简单。
#Non-recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes

#Recursive
$fileTypes = @("*.prt","*.doc")
$a = Get-ChildItem c:\work\* -include $fileTypes -recurse