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

POWERSHELL searching for path to files using WHERE command

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

这是一个脚本,可以按照您想要的方式执行某些操作:

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' 表示仅 return 扩展名为 .exe 的文件。
  • -ErrorAction SilentlyContinue 表示 "if some issue occurs (e.g. you don't have access to a folder) don't throw up error messages; just carry on"。
  • |是一个管道字符/表示将当前命令的每个输出发送到下一个命令的管道输入。 IE。在这种情况下,Get-ChildItem 是 return 一堆 FileSystemInfo 对象,一个一个地传递给 Where-Object 进行过滤。
  • Where-Object 计算一个布尔表达式;任何评估为 true 的东西都会通过管道进行;任何导致 false 的结果都会通过所有进一步的操作得到 blocked/ignored。
  • {$_.FullName -like '*git*'} 是要评估的条件。 $_为当前管道变量;即从 Get-ChildItem 命令的输出传递的每个 FileSystemInfo 对象。 FullName 是表示 file/folder 的完整路径(例如 "c:\program files\something\somethingelse\file.exe"-like '*git*' 表示“return 完整路径包含文本 git 在路径中(即 * 是通配符。
  • | Select-Object FullName 然后获取由 Where-Object 传递的结果(即符合条件的结果),以及 returns 单个 属性,FullName 来自那些对象;所以你得到了 exe 路径的列表,而不是从 FileSystemInfo 对象中描述它们的所有属性。

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

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