IT-Wolf 0 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 (bearbeitet) 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 22. März 2021 von IT-Wolf Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 (bearbeitet) Es ist möglich (wahrscheinlich), dass Du in der Variable $datei etwas mehr drin hast, als Du denkst ... z.B. mehrere Zeilen oder wenigstens einen Zeilenumbruch. Was bekommst Du denn angezeigt, wenn Du Dir $datei.count ausgeben läßt? bearbeitet 22. März 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 Moin, $Datei enthält den gesamten Inhalt der Datei. Sicher, dass dies der Suchbegriff ist? Wenn ja: Lass dir $Datei mal ausgeben mit Begrenzern drumrum. Ein Zeilenumbruch am Ende etwa dürfte den Vergleich scheitern lassen. Gruß, Nils Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 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 Zitieren Link zu diesem Kommentar
MurdocX 953 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 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/ Zitieren Link zu diesem Kommentar
IT-Wolf 0 Geschrieben 22. März 2021 Autor Melden Teilen Geschrieben 22. März 2021 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. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 (bearbeitet) vor 3 Minuten schrieb IT-Wolf: Allerdings sucht er nur nach der ersten Datei und macht dann schluss wenn er die gefunden hat. Was ist denn der Inhalt der Datei "such_nach.txt"? Sollten es mehrere Zeilen mit jeweils einem Dateinamen sein, dann brauchst Du eine Schleife. bearbeitet 22. März 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
IT-Wolf 0 Geschrieben 22. März 2021 Autor Melden Teilen Geschrieben 22. März 2021 vor 2 Minuten schrieb BOfH_666: Was ist denn der Inhalt der Datei "such_nach.txt"? Achja Sry. Pic20210320 Pic20210322 Pic2021032221 Log_212521 usw. Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 vor 5 Minuten schrieb IT-Wolf: 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. Dann lies doch ab dem "oder eben mit" mal weiter und schau dir "foreach" an. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 (bearbeitet) 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 22. März 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
IT-Wolf 0 Geschrieben 22. März 2021 Autor Melden Teilen Geschrieben 22. März 2021 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 ... Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 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. Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 Moin, oder wir fangen von vorn an und klären, was denn eigentlich die Aufgabe ist ... offenbar befinden wir uns ja wieder mal mitten in irgendwas. Also: Was ist denn das Szenario und was ist das gewünschte Ergebnis? Was soll mit diesem Ergebnis dann geschehen? Gruß, Nils 1 Zitieren Link zu diesem Kommentar
IT-Wolf 0 Geschrieben 22. März 2021 Autor Melden Teilen Geschrieben 22. März 2021 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. Zitieren Link zu diesem Kommentar
tesso 375 Geschrieben 22. März 2021 Melden Teilen Geschrieben 22. März 2021 Mir fällt da die erweiterte Überwachung im AD ein. Dort siehst du dann auch wer löscht. Vorsicht, das könnte auch Personalüberwachung werden. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.