Kennt sich jemand mit Powershell Scripte aus?

2 Antworten

welches betriebssystem?

auf nem windows server hast du den „FSRM“. der kann solche tasks von haus aus automatisieren ;-)

Woher ich das weiß:Studium / Ausbildung – System- und Netzwerkadministrator

So könnte es klappen:

Get-ChildItem -Path C:\* -Include *.xml, *.txt, *.zip -Recurse -File | where LastWriteTime -le (Get-Date).AddDays(-90) | Remove-Item -Force -whatif

Als Sicherheit habe ich dir den "-whatif" tag bei "Remove-Item" hinzugefügt. So wird noch nichts gelöscht. Wenn die Tests erfolgreich sind, kannst du diesen entfernen und dann wird alles gelöscht :)

Flobbyjoe 
Fragesteller
 19.09.2018, 10:52

Habe es mal ausprobiert, er sagt mir allerdings das bei .zip ein Fehler liegt

forfiles : ERROR: Invalid argument/option - '*.zip*'.

At line:1 char:1

+ forfiles /P C:\root\ /S /M -include *.zip* *.xml* /D -90 /C "cmd /c del /q @path ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  + CategoryInfo     : NotSpecified: (ERROR: Invalid ...ion - '*.zip*'.:String) [], Remote 

  Exception

  + FullyQualifiedErrorId : NativeCommandError

 

Type "FORFILES /?" for usage.

1
Gaterde  19.09.2018, 10:54
@Flobbyjoe

Hast du meinen Command ausgeführt? Dieser arbeitet mit Get-ChildItem und nicht mit Forfiles...

0
Flobbyjoe 
Fragesteller
 19.09.2018, 10:55
@Gaterde

Ach mein Fehler, war noch die alte Zeile, probiere ich gleich nochmal schnell aus.

1
Flobbyjoe 
Fragesteller
 19.09.2018, 11:00
@Flobbyjoe

also er führt es aus, allerdings löscht er nicht die Dateien die in C:\root\crlog\ liegen bzw. er löscht gar keine dateien in C:\

1
Gaterde  19.09.2018, 11:02
@Flobbyjoe

Lese bitte die Antworten genauer ;) Wie beschrieben habe ich noch den "-whatif" tag hinzugefügt damit wird nichts gelöscht sondern dir wird angezeigt, was gelöscht würde. Dies dient zu testzwecken, da das C:\ Laufwerk heikel sein kann. Lösch diesen Tag und dann wird er auch die Files löschen.

0
Flobbyjoe 
Fragesteller
 19.09.2018, 11:19
@Gaterde

selbst wenn ich -whatif entferne und zusätzlich noch den genauen Ordnerpfad angebe, löscht er leider rein gar nichts, es kommt zwar keine Fehlermeldung, sodass er zwar etwas ausführt, jedoch weiß ich nicht was er denn tut, wenn er überhaupt etwas tut :/

1
Gaterde  19.09.2018, 11:22
@Flobbyjoe

Sind die Files denn auch wirklich älter als 90 Tage?

0
Flobbyjoe 
Fragesteller
 19.09.2018, 11:22
@Gaterde

ja, die älteste ist vom 12.01.18 und da gibt es einige von

0
Gaterde  19.09.2018, 11:26
@Flobbyjoe

Hast du denn überhaupt Berechtigungen dort Files zu löschen? Evtl das Powershell Script als Admin ausführen?

0
Flobbyjoe 
Fragesteller
 19.09.2018, 11:36
@Gaterde

Berechtigungen habe ich, bin aktuell auf einem Test Server und generell als Admin angemeldet. Das Script und Powershell generell läuft als Admin aber es funktioniert nicht.. :(

0
Gaterde  19.09.2018, 11:38
@Flobbyjoe

Hmm, ich habe es bei mir getestet und da hat es funktioniert. Versuche mal einen Ordner C:\Test anzulegen und es da zu testen...

0
Flobbyjoe 
Fragesteller
 19.09.2018, 11:43
@Gaterde

Tut sich leider gar nichts bei mir, C:\Test geht nicht weder C:\Test\crlog noch C:\Test\crlog\Datei.txt

mit meiner in meiner obigen Frage oben beschriebenem cmd ohne das ich .txt .xml etc. eingefügt habe, hat es funktioniert, dass er in dem ordner alle dateien gelöscht hat, die älter als 90 Tage alt waren, dass ist nur leider nicht sinn und zweck :/

0
Gaterde  19.09.2018, 12:43
@Flobbyjoe

Der Pfad muss am Ende ein \* haben.

Also

C:\Test\*

C:\Test\crlog\*

0