我很好奇如何基于此示例生成不同的文件列表。
**此示例生成包含文本“folders”但在同一行上没有文本“.invoke”的所有.ps1和.psm1文件的列表。
$text='folders'
dir C:\Workspace\mydirectorytosearch1\ -recurse -filter '*.ps*1' | Get-ChildItem | select-string -pattern $text | where {$_ -NotLike '*.invoke(*'}
dir C:\Workspace\mydirectorytosearch2\ -recurse -filter '*.ps*1' | Get-ChildItem | select-string -pattern $text | where {$_ -NotLike '*.invoke(*'}
这很酷并且运行良好但我得到重复的文件输出(相同的文件但不同的行号)。
如何保持文件输出的清晰?
目前的不良输出:
- C:\工作区\ mydirectorytosearch1 \匿名化-psake.ps1:4 :. “$($ folders.example.test)\匿名化\ Example.vars.ps1” C:\工作区\ mydirectorytosearch1 \匿名化-psake.ps1:5 :. “$($ folders.missles)\提取\集结utilities.ps1”
所需的输出:
- C:\工作区\ mydirectorytosearch1 \匿名化-psake.ps1
帮我调整一下我的脚本??
答案 0 :(得分:7)
您可以使用Select-String和Unique参数消除重复:
$text='folders'
Get-ChildItem C:\Workspace\mydirectorytosearch1\,C:\Workspace\mydirectorytosearch2\ -Recurse -Filter '*.ps*1' |
Select-String -Pattern $text | Where-Object {$_ -NotLike '*.invoke(*'} |
Select-Object Path -Unique