D3v*_*r0n 5 powershell scripting powershell-ise powershell-2.0 powershell-3.0
我很好奇如何根据这个例子生成一个不同的文件列表.
**此示例生成包含文本"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(*'}
Run Code Online (Sandbox Code Playgroud)
这很酷,效果很好,但我得到重复的文件输出(相同的文件,但不同的行号).
如何保持文件输出清晰?
目前的不良输出:
- C:\工作区\ mydirectorytosearch1 \匿名化-psake.ps1:4 :. "$($ folders.example.test)\ anonymize\Example.vars.ps1"C:\ Workspace\mydirectorytosearch1\anonymize-psake.ps1:5:."$($ folders.missles)\提取物\集结utilities.ps1"
所需的输出:
- C:\工作区\ mydirectorytosearch1 \匿名-psake.ps1
帮我调整我的脚本?
您可以使用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
Run Code Online (Sandbox Code Playgroud)