欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Powershell小技巧之使用Get-ChildItem得到指定扩展名文件

程序员文章站 2022-05-08 10:10:06
当你使用get-childitem获取输出文件列表时,你可能会发现即使用了-filter参数也会比你预期的结果要多得多。 这里有一个例子,它不仅返回.ps1扩展名文件同时...

当你使用get-childitem获取输出文件列表时,你可能会发现即使用了-filter参数也会比你预期的结果要多得多。

这里有一个例子,它不仅返回.ps1扩展名文件同时也返回.ps1xml扩展名文件:

get-childitem -path c:\windows -recurse -erroraction silentlycontinue -filter *.ps1 

为了限制结果集只是你设置后的扩展名,可以添加一个命令的过滤器,以完善的结果:

get-childitem -path c:\windows -recurse -erroraction silentlycontinue -filter *.ps1 | 
 where-object { $_.extension -eq '.ps1' } 

这将只返回指定的扩展名文件。

混合使用get-childitem 参数

可以在同一命令中使用 get-childitem cmdlet 的多个参数。在混合使用参数之前,请确保您了解通配符匹配。例如,以下命令将不会返回完整的结果:

ps> get-childitem -path c:\windows\*.dll -recurse -exclude [a-y]*.dll

它只会返回c:\windows\下的不以a-y开头的dll。原因是你给的是具体的只是c:\windows\下的*.dll,而这与递归的参数-recurse矛盾,因为-recurse将返回的是c:\windows\目录及递归目录下所有符合要求的dll。

以下是正确的代码:

若要为名称与特定模式相匹配的文件指定递归搜索,请使用 -include 参数。

ps> get-childitem -path c:\windows -include *.dll -recurse -exclude [a-y]*.dll