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
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 523759
Url: https://administrator.de/contentid/523759
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
6 Kommentare
Neuester Kommentar
Servus,
Dein Fehler liegt im Ansprechen der Property innerhalb der doppelten Anführungszeichen. Sowas
Entweder du lässt sie weg, sind ja hier sowieso überflüssig
Schreibst es so wenn du das unbedingt so haben willst
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
Grüße Uwe
p.s. Der Dienstags Absacker geht auf mich . Prost!
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}
gci $quellpfad -include $ext -File -recurse | % { remove-item "$($_.Fullname)" -force}
Nehme also der Einfachheit gleich diese Variante
gci $quellpfad -include $ext -File -recurse | remove-item -force
p.s. Der Dienstags Absacker geht auf mich . Prost!
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 .
Immer wieder lesenswert:
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.