我在使用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'
表示只返回扩展名为.exe的文件-ErrorAction SilentlyContinue
表示,"如果出现某些问题(例如,您无法访问文件夹(,请不要抛出错误消息;只需继续">|
是一个流水线字符,用于将当前命令的每个输出发送到下一个命令的流水线输入。也就是说,在这种情况下,Get-ChildItem
返回一堆FileSystemInfo
对象,这些对象被逐个传递给Where-Object
进行过滤- CCD_ 11评估布尔表达式;任何评估为
true
的东西都通过管道进行;导致CCD_ 13的任何操作都会被所有进一步的操作阻塞/忽略 - CCD_ 14是评价的条件。
$_
是当前管道变量;即从CCD_ 16命令的输出传递的每个FileSystemInfo对象。FullName
是所表示的文件/文件夹的完整路径(例如"c:program filessomethingsomethingelsefile.exe"
.-like '*git*'
表示"返回完整路径中包含文本git
的任何值(即*
是通配符( - 然后,
| Select-Object FullName
获取Where-Object
传递的结果(即与条件匹配的结果(,并从这些对象返回单个属性FullName
;因此,您可以获得ex的路径列表,而不是从FileSystemInfo对象中描述它们的所有属性
可以在此处找到完整的PowerShell文档:https://learn.microsoft.com/en-us/powershell/
有关任何特定命令的帮助,请键入Get-Help command
,例如Get-Help Get-ChildItem
。