5

この例に基づいて個別のファイルリストを作成する方法に興味があります。

**この例では、テキスト「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:\ Workspace \ mydirectorytosearch1 \ anonymize-psake.ps1:4:。"$($ folder.example.test)\ anonymize \ Example.vars.ps1"
  • C:\ Workspace \ mydirectorytosearch1 \ anonymize-psake.ps1:5:。"$($ folder.missles)\ extract \ build-utilities.ps1"

目的の出力:

  • C:\ Workspace \ mydirectorytosearch1 \ anonymize-psake.ps1

スクリプトを微調整するのを手伝ってください??

4

1 に答える 1

8

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
于 2012-10-31T17:33:39.913 に答える