Powershell Script Frage zu Ordnerübergreifung
Hallo zusammen,
ich habe mal wieder eine mehr oder minder kleine Frage.
Ich möchte ein PowerShell Script basteln, welches es mir folgende Dinge ermöglicht.
- Öffne den Ordner XY
- Wähle den obersten Ordner an und prüfe in diesem Ordner, ob Datei XY vorhanden ist, falls vorhanden löschen
- springe zurück in den vorherigen Ordner und wähle den nächsten Ordner an und prüfe, ob die Datei XY vorhanden ist, wenn ja diese löschen usw.
bis alle Ordner durchlaufen sind
- zum Schluss erstelle mir ein Log-File, von den Ordnern, indem du die Datei XY gelöscht hast und schreibe Sie mir auf C:\temp\
Folgendes Scriptschnippsel habe ich bis jetzt gebaut:
Ich bin noch sehr frisch mit PowerShell bitte nehmt etwas Rücksicht ;)
Vielen Dank
ich habe mal wieder eine mehr oder minder kleine Frage.
Ich möchte ein PowerShell Script basteln, welches es mir folgende Dinge ermöglicht.
- Öffne den Ordner XY
- Wähle den obersten Ordner an und prüfe in diesem Ordner, ob Datei XY vorhanden ist, falls vorhanden löschen
- springe zurück in den vorherigen Ordner und wähle den nächsten Ordner an und prüfe, ob die Datei XY vorhanden ist, wenn ja diese löschen usw.
bis alle Ordner durchlaufen sind
- zum Schluss erstelle mir ein Log-File, von den Ordnern, indem du die Datei XY gelöscht hast und schreibe Sie mir auf C:\temp\
Folgendes Scriptschnippsel habe ich bis jetzt gebaut:
#Variable für die Datei XY
$dateixy = "C:\xy\Testdatei.txt"
#IF Schleife
If (Test-Path $dateixy)
{
Write-Host -BackGroundColor Green "Die Datei $($dateixy) existiert."
Delete $dateixy
}
Ich bin noch sehr frisch mit PowerShell bitte nehmt etwas Rücksicht ;)
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 380740
Url: https://administrator.de/contentid/380740
Ausgedruckt am: 19.11.2024 um 14:11 Uhr
12 Kommentare
Neuester Kommentar
Get-ChildItem, kannst du auch als dir oder ls schreiben, das sind alles Aliase für Get-ChildItem
Die Ordner heißen alle gleich in dem Oberordner\ erst nach löschen der Datei xy werden diese wieder mit den richtigen Namenskonventionen hinterlegt, deshalb muss in die Log-File geschrieben werden, bei welcher Namenskonvention die Datei gelöscht wurde. (ist das verständlich ausgedrückt)
Jop ist ja mit obigem kein ProblemAhja und die Logfile muss so etwas wie das Datum von heute haben als Logfile_$date.txt
ich dachte da an eine Variable.
$date = "dd:mm:yy" und diese irgendwie an Out-File -Path C:\temp\Logs\Logfile_$date.txt
Geht so etwas?
Kein Problem, erste Zeile austauschen mit :ich dachte da an eine Variable.
$date = "dd:mm:yy" und diese irgendwie an Out-File -Path C:\temp\Logs\Logfile_$date.txt
Geht so etwas?
Start-Transcript -Path "C:\temp\logs\logfile_$(get-date -f 'ddMMyyyy').txt"
Jepp hab mich vertippt, da gehören Doppelte drum herum da ja ansonsten keine Auflösung von Subexpressions stattfindet, ist oben korrigiert .
Das Funktioniert schon, aber ...
Einmal in die Doku schauen hätte es dir auch verraten.
Die Ordner heißen weiterhin D.... und die Desktop.ini wurde nicht gelöscht.
das du eine versteckte löschen willst wusste hier niemand, deswegen musst du den -Force Parameter zu Get-ChildItem hinzufügen dann klappts auch mit dem versteckten Nachbarn!!gci "C:\Oberordner\*\desktop.ini" -File -Force | remove-item -Force -Verbose
Zitat von @Pozelei:
oder bezieht sich das eine -Force auf Get-Childitem -File -Force auf die Datei und das andere -Force, dass er die Datei definitiv löschen soll?
Richtig, das eine gehört zu Get-Childitem damit dieses auch versteckte Dateien inkludiert und das andere zu Remove-Item.oder bezieht sich das eine -Force auf Get-Childitem -File -Force auf die Datei und das andere -Force, dass er die Datei definitiv löschen soll?
Wofür ist der -Verbose Parameter was sagt dieser aus?
Der zeigt dir detaillierte Infos auf der Konsole an was beim Löschen passiert und das landet dann auch im Log.Google kaputt?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
-Verbose[:{$true | $false}]
Alias: vb
Displays detailed information about the operation performed by the command. This information resembles the information in a trace or in a transaction log. This parameter works only when the command generates a verbose message. For example, this parameter works when a command contains the Write-Verbose cmdlet.
nun funktioniert es wieder nicht.
Setzen sechs. Funktioniert nicht ist keine qualifizierte Meldung für ein Admin Forum liebes Kind.Löschen kann das Skript nur auf das es auch entsprechende Zugriffsrechte besitzt und auch nur Dateien die sich nicht gerade im Zugriff befinden, gilt es ebenfalls zu berücksichtigen. Das Skript macht das was von dir gefordert war nur musst du selbst für die passende Umgebung und Randparameter sorgen!!
Also nicht rummotzen sondern Hirn einschalten und los geht's.