h41msh1c0r
Goto Top

Powershell Remove-Item löscht nicht

Aloa in die Runde,

das soll wirklich keine Fr Frage sein, aber irgendwie löscht er meine zusammengesammelten Dateien nicht.

Win 2012R2, PS4.0

$quellpfad = "c:\test\"  
$ext = "*.log"  
gci $quellpfad -include $ext -recurse | % { remove-item "$_.Fullname" -force}  

Selbst wenn ich mir $_.FullName ausgeben lasse stimmen die gelisteten Pfade/Dateien die gelöscht werden sollen.
Der Nutzer ist Administrator und hat auf dem Test Verzeichnis Vollzugriff.
Die ISE ist als elevated gestartet.
Ich bekomme auch keinen Fehler geworfen, es werden einfach keine der betroffenen Dateien gelöscht.
Manuelles Löschen in normaler PS Shell funktioniert.

Wo klemmt es hier?

VG

Content-ID: 523759

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

Printed on: October 11, 2024 at 14:10 o'clock

colinardo
Solution colinardo Dec 10, 2019 updated at 16:57:08 (UTC)
Goto Top
Servus,
Dein Fehler liegt im Ansprechen der Property innerhalb der doppelten Anführungszeichen. Sowas
"$_.Fullname"
geht nicht. Wenn du innerhalb von Anführungszeichen eine statt nur einer Variablen eine Property einer Variablen ansprechen willst musst du das so ausschreiben "$($_.Fullname)", also mit einer Subexpression innerhalb der Anführungszeichen.

Entweder du lässt sie weg, sind ja hier sowieso überflüssig
gci $quellpfad -include $ext -File -recurse | % { remove-item $_.Fullname -force}
Schreibst es so wenn du das unbedingt so haben willst
gci $quellpfad -include $ext -File -recurse | % { remove-item "$($_.Fullname)" -force}  
Oder am besten lässt du gleich die ganze Foreach-Schleife weg, denn die ist hier sowieso absolut überflüssig

Nehme also der Einfachheit gleich diese Variante
gci $quellpfad -include $ext -File -recurse | remove-item -force
Grüße Uwe

p.s. Der Dienstags Absacker geht auf mich face-wink. Prost!
H41mSh1C0R
H41mSh1C0R Dec 10, 2019 at 16:22:24 (UTC)
Goto Top
Danköö =)

Doch wieder so trivial. Aber meine Schicht geht ja noch 4,5h. ;(

*Prost kommt später*
colinardo
colinardo Dec 10, 2019 updated at 16:26:03 (UTC)
Goto Top
Na dann kann ja noch ein Kaffee nicht schaden face-smile. Hier geht's noch max. 12 Stunden weiter, auch nicht besser ... Hängematte aufhäng.

Bittö.
H41mSh1C0R
H41mSh1C0R Dec 10, 2019 at 16:30:40 (UTC)
Goto Top
ui 12h dann auch noch eine ruhige Nachtschicht. =)
Fennek11
Fennek11 Dec 10, 2019 at 16:53:13 (UTC)
Goto Top
Warum nicht einfach so?
remove-item -Path C:\test -Filter *.log -Recourse -Force 
colinardo
colinardo Dec 10, 2019 updated at 17:13:42 (UTC)
Goto Top
Zitat von @Fennek11:

Warum nicht einfach so?
remove-item -Path C:\test -Filter *.log -Recourse-Force 
Erstens weil das schon syntaktisch (typo mal ausgenommen) fehlerhaft ist (würde den Ordner C:\test selbst löschen und Filter wird hier nicht beachtet) und remove-item außerdem beim Durchsuchen nur die erste Ebene behandelt, zweitens gibt einen weiteren guten Grund warum so nicht! Weil das unter Umständen, wenn vorhanden, auch ganze Ordner inkl. deren Inhalt löscht die z.B. "OrdnerABC.log" benannt sind face-wink.


Immer wieder lesenswert:
Because the Recurse parameter in Remove-Item has a known issue, the command in this example uses Get-ChildItem to get the desired files, and then uses the pipeline operator to pass them to Remove-Item.