Alle Dateien und Zeilen finden, die eine bestimmte Zeichenfolge enthalten

364
Nora Seinfield

Ich bin ziemlich neu bei Powershell und muss meinem Kollegen helfen, alle Dateien in einem Ordner zu finden, der das Wort enthält /Documents/.

Die Ausgabe muss in einer Textdatei sein, die sowohl den Pfad als auch die Zeile in dieser Datei enthält.

Zunächst habe ich es geschafft, die Pfade mit dem folgenden Code zu extrahieren. Ich schaffe es jedoch nicht, folgende Zeilen einzufügen:

$path = 'C:\Users\XXX' $Text =”/Documents/" $PathArray = @()  Get-ChildItem $path -Filter *.rdl -Recurse | ForEach-Object {  If (Get-Content $_.FullName | Select-String -Pattern $Text ){ $PathArray += $_.FullName $PathArray += $_.FullName  #write-Host "jhk" } $PathArray | % {$_} | Out-File "C:\Users\XX\tes2.txt"-Append } Write-Host "Contents of ArrayPath:" $PathArray | ForEach-Object {$_} 

Dieser Code funktioniert, aber wie gesagt, ich bin nicht sicher, wie ich die Zeilen auch hinzufügen soll.

0
Wo möchten Sie welche Zeilen hinzufügen? harrymc vor 5 Jahren 0
Ein einfaches `gci 'C: \ Users \ xxx \ * .rdl' -r | sls -Pattern '/ Documents /'` sollte schon tun, was Sie wollen. LotPings vor 5 Jahren 0
Ich möchte die Zeile für jede Datei hinzufügen, die die Zeichenfolge "Dokumente" enthält. Aber ich kann es nicht zum Laufen bringen. Die Ausgabe muss möglichst zweispaltig sein. Einer mit dem Pfad der Datei und der andere mit der Zeile, die die Zeichenfolge enthält. Nora Seinfield vor 5 Jahren 0

1 Antwort auf die Frage

0
postanote

Es ist wichtig, dass Sie, wenn Sie neu sind, zuerst die Zeit investieren, um unnötige Frustration und Verwirrung zu vermeiden, auf die Sie stoßen werden.

Suchen Sie in der Microsoft Virtual Academy auf PowerShell und YouTube nach kostenlosen Videotrainings.

Hier einige weitere Ressourcen und Ratschläge:

  • Kostenlose eBooks sind auf dieser Website verfügbar
  • Lesen Sie die vollständige Hilfedatei zu jedem Cmdlet, das Sie verwenden möchten
  • Übe mit den Beispielen
  • Lesen Sie die Hilfedatei erneut
  • Holen Sie sich ein paar gute Bücher wie "PowerShell in einem Monat des Mittagessens" .
  • Es gibt viele kostenlose PowerShell-eBooks auf den Websites von Microsoft und anderen.

Siehe auch: Der PowerShell Survival Guide

Wie für ein spezifisches Beispiel zu Ihrer Frage. Wie wäre es mit diesem Ansatz?

$searchWords = 'Hello','Client'  Foreach ($sw in $searchWords) { Get-Childitem -Path "d:\temp" -Recurse -include "*.txt","*.csv" |  Select-String -Pattern "$sw" |  Select Path,LineNumber,@} }   # Partial Results  Path LineNumber SearchWord ---- ---------- ---------- D:\temp\Duplicates\BeforeRename1\PsGet.txt 157 Hello  D:\temp\Duplicates\BeforeRename1\PsGet.txt 161 Hello  D:\temp\Duplicates\BeforeRename1\StringText.txt 1 Hello  D:\temp\Duplicates\PoSH\PsGet.txt 157 Hello  D:\temp\Duplicates\PoSH\PsGet.txt 161 Hello  D:\temp\Duplicates\PoSH\StringText.txt 1 Hello  ...  D:\temp\Duplicates\BeforeRename1\PoSH-Get-Mo... 108 Client  D:\temp\Duplicates\BeforeRename1\Powershell ... 12 Client  D:\temp\Duplicates\BeforeRename1\Powershell ... 15 Client  ...  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 92 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 94 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 149 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 157 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 191 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 239 Client  D:\temp\Duplicates\BeforeRename1\WindowsFeat... 241 Client