Powershell letzte Backupdatei des Monats verschieben
Hallo,
Ich möchter gern ein Backup, was täglich auf einer NAS geschpeichert wird, verschieben. Dazu soll immer das Backup vom letzten Tag im Monat in einen Ordner "Monatssicherung" verschoben werden. Das Script funktioniert so halbwegs, da es zwar das letzte Backup, des Monats verschiebt, diese aber meist vom vorletzten Tag des Monats ist. Das backup läuft immer täglich um 23:00 Uhr. Bis es aber ferti ist, ist es schon nach 24:00 Uhr und somit ist das Datum der letzten Änderung schon am neuen Tag und somit im neuen Monat. Was kann/ müsste ich am folgenden Script ändern, damit das so klappt, wie ich das gern hätte?
Ich möchter gern ein Backup, was täglich auf einer NAS geschpeichert wird, verschieben. Dazu soll immer das Backup vom letzten Tag im Monat in einen Ordner "Monatssicherung" verschoben werden. Das Script funktioniert so halbwegs, da es zwar das letzte Backup, des Monats verschiebt, diese aber meist vom vorletzten Tag des Monats ist. Das backup läuft immer täglich um 23:00 Uhr. Bis es aber ferti ist, ist es schon nach 24:00 Uhr und somit ist das Datum der letzten Änderung schon am neuen Tag und somit im neuen Monat. Was kann/ müsste ich am folgenden Script ändern, damit das so klappt, wie ich das gern hätte?
1
2
3
4
2
3
4
$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("x:", "\\192.168.50.70\mysqlback", $false, "\\domain\username", "password")
$files = gci 'x:\full_backups' -Filter *.zip | ?{$_.LastWriteTime.toString('yyyyMM') -eq (get-date).AddMonths(-1).toString('yyyyMM')} | sort LastWriteTime -Desc
$files | select -First 1 | move-item -Destination 'x:\Monatssicherung' -Force
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 395699
Url: https://administrator.de/forum/powershell-letzte-backupdatei-des-monats-verschieben-395699.html
Ausgedruckt am: 08.04.2025 um 12:04 Uhr
5 Kommentare
Neuester Kommentar

Mit Karenz
Oder erstes des Monats
1
$files = gci 'x:\full_backups' -Filter *.zip | ?{$_.LastWriteTime -ge (get-date -Day 1).Date.AddMonths(-1) -and $_LastwriteTime -lt (get-date -Day 1).Date.AddHours(6)} | sort LastWriteTime -Desc | Select -First 1
1
$files = gci 'x:\full_backups' -Filter *.zip | ?{$_.LastWriteTime.toString('yyyyMM') -eq (get-date).toString('yyyyMM')} | sort LastWriteTime | select -First 1

Zitat von @MarciMarc85:
Die erste Variante, mit 6 Std. karenz, gefällt mir am Besten. Allersdings wird dort das Backup vom letzten Tag, (also gestern) kopiert und nicht das letzte vom vergangenen Monat.
Naja, du hättest nur ein Select -First 1 an die Pipe hängen müssen (s. oben), da sieht man mal wieder das die Leute hier nicht mal im Ansatz mitdenken sondern nur stur copy und paste machen ... Die erste Variante, mit 6 Std. karenz, gefällt mir am Besten. Allersdings wird dort das Backup vom letzten Tag, (also gestern) kopiert und nicht das letzte vom vergangenen Monat.