Jump to content

Powershell Suchabfrage mit Variable


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen.

 

Ich habe gerade ein kleines Problem und hänge etwas in den Seilen. Ich würde gerne eine Powershell-Abfrage machen, die nach dem Inhalt einer Datei sucht und diese dann anschließend in eine txt-Datei ausgibt.

 

$datei = Get-content $env:USERPROFILE\Desktop\such_nach.txt 
Get-ChildItem -Path "D:\daten\*" -Recurse | Where-Object {$_.Name -like NAME AUS DATEI} | Select-Object FullName | Export-Csv -Path $home\desktop\ergebnis.txt -NoTypeInformation

 

Wenn ich NAME AUS DATEI durch den Begriff ersetze, findet er alles. Wenn ich aber an die STelle $datei setze, findet er nichts.

 

Kann mir da jemand helfen?

bearbeitet von IT-Wolf
Link zu diesem Kommentar

Hi,

 

das wird daran liegen, dass "$datei" ein Array ist. Sofern in "suche_nach.txt" immer nur eine Zeile steht, könntest du es mit "$datei[0]" testen oder eben mit "foreach" den Inhalt aus "$datei" zeilenweise verarbeiten. Ansonsten solltest du so weit links wie möglich filtern. Get-Childitem kennt dafür bspw. "-Filter".

 

Gruß

Jan

Link zu diesem Kommentar

Man muss das Rad ja nicht mehrmals erfinden :-)

 

Suchen & Ersetzen von Dateiinhalten - Powershell - IT Explorations (it-explorations.de)

https://www.it-explorations.de/suchen-ersetzen-powershell/

 

Suchen & Umbenennen von Dateinamen mit Powershell - IT Explorations (it-explorations.de)

https://www.it-explorations.de/suchen-umbenennen-von-dateinamen-mit-powershell/

Link zu diesem Kommentar
vor 23 Minuten schrieb testperson:

Hi,

 

das wird daran liegen, dass "$datei" ein Array ist. Sofern in "suche_nach.txt" immer nur eine Zeile steht, könntest du es mit "$datei[0]" testen oder eben mit "foreach" den Inhalt aus "$datei" zeilenweise verarbeiten. Ansonsten solltest du so weit links wie möglich filtern. Get-Childitem kennt dafür bspw. "-Filter".

 

Gruß

Jan

Also mit Where-Object {$_.Name -like $datei[0]} gehts jetzt. Allerdings sucht er nur nach der ersten Datei und macht dann schluss wenn er die gefunden hat.

Link zu diesem Kommentar

Versuch ma das hier:

$dateiInhalt = Get-content $env:USERPROFILE\Desktop\such_nach.txt 
$Result = 
foreach ($DateiName in $dateiInhalt) {
    Get-ChildItem -Path "D:\daten\*" -Recurse | 
        Where-Object { $_.Name -like "$DateiName*" } | 
            Select-Object FullName 
}
$Result | Export-Csv -Path $home\desktop\ergebnis.csv -NoTypeInformation

 

bearbeitet von BOfH_666
Link zu diesem Kommentar
vor 24 Minuten schrieb MurdocX:

Man muss das Rad ja nicht mehrmals erfinden :-)

 

Suchen & Ersetzen von Dateiinhalten - Powershell - IT Explorations (it-explorations.de)

https://www.it-explorations.de/suchen-ersetzen-powershell/

 

Suchen & Umbenennen von Dateinamen mit Powershell - IT Explorations (it-explorations.de)

https://www.it-explorations.de/suchen-umbenennen-von-dateinamen-mit-powershell/

Schaue ich mir mal an. Danke :)

vor 5 Minuten schrieb BOfH_666:

Versuch ma das hier:


$dateiInhalt = Get-content $env:USERPROFILE\Desktop\such_nach.txt 
$Result = 
foreach ($DateiName in $dateiInhalt) {
    Get-ChildItem -Path "D:\daten\*" -Recurse | 
        Where-Object { $_.Name -like "$DateiName*" } | 
            Select-Object FullName 
}
$Result | Export-Csv -Path $home\desktop\ergebnis.csv -NoTypeInformation

 

Vielen, VIELEN Dank. Jetzt gehts ... Ich hätte gleich ne Schleife bauen sollen ...

Link zu diesem Kommentar
vor 18 Minuten schrieb IT-Wolf:

Vielen, VIELEN Dank. Jetzt gehts ... Ich hätte gleich ne Schleife bauen sollen ...

... sonderlich effizient ist das aber nicht. Du suchst für jede einzelne Zeile in der Eingabe-Datei wieder und wieder das gesamte Verzeichnis ab. Wenn die Datei und auch das abzusuchende Verzeichnis deutlich größer werden, sollte man sich eine effizientere Strategie überlegen. z.B. könntest Du mit Get-ChildItem die komplette Liste der Dateien im Verzeichnis erstellen und diese dann mit der Liste an Dateinamen vergleichen.

Link zu diesem Kommentar

Für meinen Zweck ist das vollkommen ausreichend.

 

Ist eigentlich nur eine kleine Spielerei um nach diversen Dateien zu suchen die in der Liste definiert sind.

 

Ich habe da jemanden in Verdacht, der ständig Dateien löscht. Ausversehen oder absichtlich, keine Ahnung. Angeblich ausversehen… Diese Dateien werden dann wiederhergestellt um zu hören, dass ne Woche später diese wieder verschwunden sind.

 

Auf den Bereich haben auch nur 3 Leute Zugriff.

 

Da es meistens die gleichen Inhalte sind, reicht mir das Auslesen der Liste.

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...