silence
Goto Top

Powershell: Suche nach bestimmten Inhalten in verschiedenen Dateien

Hallo zusammen

Ich habe eine Datei mit Suchbegriffen (suche.txt)
Ich möchte nun in einem Verzeichnis T die dort liegenden Dateien nach diesen Suchegriffen absuchen und in eine CSV Datei ausgeben. Der folgende Code funktioniert soweit, dass ich eine entsprechende csv Ausgabe erhalte mit Namen der Datei, aber leider bringt er mir nur immer den ersten gefundenen Begriff aus suche.txt als Resultat.

Mein Code:

#Name der csv-Ausgabedatei
$fileName = 'T:\Suchtest\Resultat_' + (Get-Date -Format yyyy-MM-dd-HH-mm ) + ".csv"  

#Pfad in dem gesucht wird
$myDrive = 'T:\Suchtest'  

#Gesuchte Wörter
$searchwords = Get-Content 'T:\Suchtest\suche.txt'  

#Titelzeile in Ausgabedatei
set-content  $fileName -Value "Dateipfad,Treffer"  

gci $myDrive -recurse -include *.txt | Select-String  -pattern  $Searchwords -AllMatches  | select  PATH , Matches | `
group Path  | % {  add-content $fileName -Value "$($_.Name) ;$($_.Group| select -ExpandProperty Matches | Sort-Object -Uniqu| select -ExpandProperty Value)"  }    

Da ich mich nicht so gut auskenne und diesen Code mit Infos aus dem Web mit Müh und Not zusammengebaut hab muss ich hier kapitulieren. Hoffe ihr könnt mir helfen. Es soll jeden Suchbegriff aus "suche.txt" abfragen und nicht nur dne ersten.

Danke vielmal
Silence

Content-ID: 6907473904

Url: https://administrator.de/contentid/6907473904

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

6247018886
Lösung 6247018886 25.04.2023 aktualisiert um 12:02:41 Uhr
Goto Top
Hi
# Name der csv-Ausgabedatei
$fileName = 'T:\Suchtest\Resultat_' + (Get-Date -Format yyyy-MM-dd-HH-mm ) + ".csv"  

# Pfad in dem gesucht wird
$myDrive = 'T:\Suchtest'  

# Gesuchte Wörter
$searchwords = (Get-Content 'T:\Suchtest\suche.txt' | %{[regex]::Escape($_)}) -join '|'  

# Suchen 
$result = Get-ChildItem $myDrive -recurse -filter *.txt | Select-String -pattern $Searchwords -AllMatches | group-object Path | %{
    [pscustomobject]@{
        Dateipfad = $_.Name
        Treffer = ($_.Group | select -ExpandProperty Matches | Sort-Object Value -Unique | select -ExpandProperty Value) -join ','  
    }
} 
# und ausgeben
if ($result){
   $result | export-csv $filename -Delimiter ";" -NoTypeInformation -Encoding UTF8  
}

Cheers briggs
Silence
Silence 25.04.2023 um 12:45:34 Uhr
Goto Top
@6247018886 das ist einfach genial, super und ganz herzlichen Dank!

Viele Grüsse
Silence