#scriptpfad ermitteln function Get-ScriptDirectory { $Invocation = (Get-Variable MyInvocation -Scope 1).Value Split-Path $Invocation.MyCommand.Path } $scriptpfad = Get-ScriptDirectory #restic variablen ### pfad zu restic, wird mit & $pfad aufgerufen $pfad="C:\Users\mg\Desktop\NextCloud\code\restic\bin\restic.exe" ### repository $repository="\\fileserver2.grote.lan\backup\restic" ### passwordfile $passwordfile="C:\Users\mg\Desktop\NextCloud\code\restic\config\password.txt" ### exclude file $excludefile="C:\Users\mg\Desktop\NextCloud\code\restic\config\exclude.txt" #ausgabe der varriablen und einfaerben der werte mit -foregroundcolor #`n ist zeilenumbruch write-host "========================================================================" write-host "Repository: " write-host -ForegroundColor Yellow $repository write-host "Pfad zu Restic: " write-host -ForegroundColor Yellow $pfad write-host "Passworddatei: " write-host -ForegroundColor Yellow $passwordfile write-host "========================================================================" write-host -ForegroundColor Red "Auschluesse: " get-content $excludefile write-host "========================================================================`n`n" do { write-host " 1 = Snapshots anzeigen" write-host "========================================================================" write-host " 2 = Statistiken - Groesse nach wiederherstellen" write-host " 3 = Statistiken - Groesse auf Storage" write-host "========================================================================" write-host " 4 = Restore - komplett" write-host " 5 = Restore - nur bestimmte Daten" write-host " 6 = Restore - alles bis auf bestimmte Daten" write-host "========================================================================" write-host " 7 = Forget(Standard...)" write-host " 8 = Prune" write-host "========================================================================" write-host " 9 = einen Snapshot loeschen" write-host "10 = Alle Snapshots eines/mehrerer Hosts löschen" write-host "11 = mehrere Snapshots löschen" write-host "========================================================================" write-host "12 = Check" write-host "13 = Rebuild-Index" write-host "14 = Cache leeren" write-host "15 = unlock" write-host "========================================================================" write-host "16 = Befehlszeile ausgeben" write-host "17 = Befehl absetzen" write-host "99 = Beenden" write-host "========================================================================" $aktion = Read-Host switch ($aktion) # switch, default faengt alle nicht eingetragen eingaben ab { 1 {& $pfad -r $repository --password-file $passwordfile snapshots ; break} 2 {& $pfad -r $repository --password-file $passwordfile stats --mode restore-size ; break} 3 {& $pfad -r $repository --password-file $passwordfile stats --mode raw-data ; break} 4 { $snapshot = read-host -Prompt "Snapshot(latest/id)"; $target = read-host -Prompt "Zielpfad: "; & $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target } 5 { $befehl=Read-Host -Prompt "Befehl?"; & $pfad -r $repository --password-file $passwordfile $befehl; break } 6 { $snapshot = read-host -Prompt "Snapshot(latest/id)"; $target = read-host -Prompt "Zielpfad: "; $exclude = read-host -Prompt "Exclude: "; & $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --exclude $exclude } 7 {& $pfad -r $repository --password-file $passwordfile forget --keep-daily 7 --keep-weekly 4 --keep-monthly 1 ; break} 8 {& $pfad -r $repository --password-file $passwordfile prune ; break} 9 { $snapshot = read-host -Prompt "Snapshot(latest/id)"; & $pfad -r $repository --password-file $passwordfile forget $snapshot } 10 { $zaehler_del_hosts_delete=0 # setzte die beiden zählvariablen $zaehler_del_hosts_print=0 write-host "========================================================================" write-host "Es wird alles bis auf jeweils einen Snapshot pro Host gelöscht." write-host "Der letzte muss händisch gelöscht werden." write-host "Eine leere Eingabe beendet die Abfrage der Hosts." write-host "========================================================================" $del_hosts=@() #erstellt array leer do{ #schreibt solange die eingabe in das array bis ein leerer eintrag erfolgt $eingabe=(Read-host "Computername eingeben...") if ($eingabe -ne ''){ $del_hosts += $eingabe} }until ($eingabe -eq '') while ($zaehler_del_hosts_delete -lt $del_hosts.length){ #löscht einträge bis ende array Write-Host $del_hosts[$zaehler_del_hosts_delete] & $pfad -r $repository --password-file $passwordfile forget --host $del_hosts[$zaehler_del_hosts_delete] --keep-last 1 $zaehler_del_hosts_delete++ } write-host -ForegroundColor yellow "`nDiese Snapshots muessen haendisch geloescht werden!" while ($zaehler_del_hosts_print -lt $del_hosts.length){ # druckt rest-ids ab die zum händisch löschen benötigt werden & $pfad -r $repository --password-file $passwordfile snapshots --host $del_hosts[$zaehler_del_hosts_print] $zaehler_del_hosts_print++ } } 11 { $zaehler_del_snaps_delete=0 # setzte die beiden zählvariablen $zaehler_del_snaps_print=0 write-host "========================================================================" write-host "Eine leere Eingabe beendet die Abfrage der Snapshots." write-host "========================================================================" $del_snaps=@() #erstellt array leer do{ #schreibt solange die eingabe in das array bis ein leerer eintrag erfolgt $eingabe=(Read-host "Snapshots-ID eingeben...") if ($eingabe -ne ''){ $del_snaps += $eingabe} }until ($eingabe -eq '') while ($zaehler_del_snaps_delete -lt $del_snaps.length){ #löscht einträge bis ende array Write-Host $del_snaps[$zaehler_del_snaps_delete] & $pfad -r $repository --password-file $passwordfile forget $del_snaps[$zaehler_del_snaps_delete] $zaehler_del_snaps_delete++ } } 12 {& $pfad -r $repository --password-file $passwordfile check ; break} 13 {& $pfad -r $repository --password-file $passwordfile rebuild-index ; break} 14 {& $pfad -r $repository --password-file $passwordfile cache --cleanup ; break} 15 {& $pfad -r $repository --password-file $passwordfile unlock; break} 16 { $befehl=Read-Host -Prompt "Befehl?"; write-host -nonewline $pfad -r $repository --password-file $passwordfile $befehl`n; break } 17 { $snapshot = read-host -Prompt "Snapshot(latest/id)"; $target = read-host -Prompt "Zielpfad: "; write-host "Include: " write-host "========================================================================" write-host -Foregroundcolor red "Beispiele: " write-host -ForegroundColor yellow "Dateitypen: *.exe`nDatei: C\Users\mg\Desktop\rclone\datei.exe`nOrdner: C\Users\mg\Desktop\rclone\" write-host "Alles ist Case-Sensitive!" write-host "========================================================================" $include = read-host & $pfad -r $repository --password-file $passwordfile restore $snapshot --target $target --include $include } 99 {exit;break} default{write-host "`nUngueltige Eingabe!"} } #der auskommentiert absatz ist ob nochmal extra gefragt werden soll ob das script weiterausgefuehrt werden soll, entfaellt da option 99 jetzt beende ist #write-host "========================================================================" #Write-Host "Abbrechen (j/n)?" #write-host "========================================================================" #$abbrechen = read-host } #while($abbrechen -eq "n") #fuehrt die schleife immer wieder aus while (1 -eq 1)