Hallo zusammen,
ich hab bisher nicht wirklich was nützliches dazu gefunden, deswegen hatte ich gehofft hier Hilfestellung zu erhalten.
Also zu meinem Problem:
Als erstes führe ich ein Backup von 2 Ordnern durch die als Unterordner in $date gespeichert werden.
Wenn die Festplatte zu voll wird, soll er alle Ordner (und deren Inhalt) löschen, die vom Namen her, älter als x-Tage sind.
Kommen wir erstmal zum Backup, damit ihr wisst wie die Ordner heißen:
# System Variable for backup Procedure $date = Get-Date -Format d.MM.yyyy $backup = "F:" $heim = "E:\Home" $desthome = "F:\$date\home" $pathhome = test-Path $desthome # Check Home Path if ( $(Try { Test-Path $heim.trim() } Catch { $true }) ) { Write-Host "Path $heim OK" } else { Write-Host "Path $heim not found" Exit } # Starting Home Backup Process if ($pathhome -eq $true) { Exit } elseif ($pathhome -eq $false) { cd $backup mkdir $date cd $date mkdir home Write-Host "Home erstellt" Copy-Item -Recurse $heim -Destination $desthome $backup_log = Dir -Recurse $desthome | out-File "$desthome\backup_log.txt" }
Dazu wird noch ein weiterer Ordner gesichtert den ich aber erstmal rausgenommen hab.
Kommen wir zum Löschen der Dateien:
# Checking remaining disk space $laufwerk = Get-WmiObject -class win32_logicalDisk ForEach ($element in $laufwerk){ if ($element.DeviceID -eq "C:"){ $laufwerk = $element.FreeSpace/1GB $laufwerk = $laufwerk|Out-String $laufwerk = $laufwerk.Split(",") $frei = $laufwerk[0] $frei = [int]$frei Write-Host $frei } } # Deleting old files, when not enough space is left if ($frei -le 200){ $DatumVor40Tagen = (Get-Date).AddDays(-40) $DatumVor40Tagen = $DatumVor40Tagen.ToString("dd.MM.yyyy") Write-Host $DatumVor40Tagen dir "C:\Users\User\Backup" | where {$_.name -lt $DatumVor40Tagen} #|% {remove-item $_.fullname -recurse -whatif -verbose} } else { Write-Host "Es sind noch" $frei "GB freier Speicherplatz vorhanden"
Der Pfad beim Löschen ist nur ein Testpfad und entspricht deswegen nicht den Pfaden oben.
Beim testen vergleicht er zwar die Namen halbwegs richtig, allerdings eben nicht gänzlich.
Ein ähnliches Problem hatte ich beim Check des freien Festplattenspeichers, wo er einen String mit einem Integer vergleichen wollte und ich deswegen beides umgewandelt habe.
Das kann ich hier natürlich nicht machen, da ich ja beispielsweise 14.01.2016 nicht einfach umwandeln kann, da ja mehrere Punkte vorhanden sind.
Ich hoffe einer von euch hat eine Idee und kann mir weiterhelfen.
Danke im Voraus
Lotosdenta