POWERSHELL使用WHERE命令搜索文件的路径

时间:2018-11-07 09:17:39

标签: powershell where

我在使用where命令时遇到问题。我必须在C:\ Program Files文件中搜索特定的exe文件并输出它的路径。

1 个答案:

答案 0 :(得分:1)

这是一个脚本,可以按照您的需要做:

Get-ChildItem -Path $env:ProgramFiles -Recurse -Filter '*.exe' -ErrorAction SilentlyContinue | Where-Object {$_.FullName -like '*git*'} | Select-Object FullName
  • Get-ChildItem列出给定路径下的所有文件和文件夹
  • -Path $env:ProgramFiles将值从环境变量“ ProgramFiles”(即程序文件目录的路径)发送到Get-ChildItem的Path参数
  • -Recurse表示要包含子文件夹(一直向下)。
  • -Filter '*.exe'说只返回扩展名为.exe的文件。
  • -ErrorAction SilentlyContinue说:“如果发生某些问题(例如,您无权访问文件夹),则不会抛出错误消息;请继续进行下去。”
  • |是管道字符,表示将当前命令的每个输出发送到下一个命令的管道输入。即在这种情况下,Get-ChildItem返回了一堆FileSystemInfo对象,这些对象被逐个传递给Where-Object以进行过滤。
  • Where-Object计算布尔表达式;评估为true的所有事物都会通过管道进行;导致false的所有内容都会被所有其他操作阻止/忽略。
  • {$_.FullName -like '*git*'}是要评估的条件。 $_是当前管道变量;即从Get-ChildItem命令的输出传递的每个FileSystemInfo对象。 FullName是要表示的文件/文件夹的完整路径(例如"c:\program files\something\somethingelse\file.exe"-like '*git*'说“返回路径中包含完整文本git的所有值(即*是通配符。
  • | Select-Object FullName然后获取Where-Object传递的结果(即符合条件的结果),并从这些对象返回单个属性FullName;因此您将获得exe路径的列表,而不是从FileSystemInfo对象中描述它们的所有属性。

完整的PowerShell文档可以在这里找到:https://docs.microsoft.com/en-us/powershell/

要获取有关任何特定命令的帮助,请键入Get-Help command,例如Get-Help Get-ChildItem