PS: Austauschlaufwerk automatisch bereinigen

Moin,

wir hatten ein Archivsystem, welches auf einem dafür deklarierten Netzlaufwerk, alle Dateien die älter waren als X Tage gelöscht hat. Dies ist unser „Post“ Laufwerk, also ein Laufwerk in dem das Komplette Organigramm abgebildet ist und jede Abteilung/jeder User einen Ordner hat, wo er Dateien ablegt um diese dann innerhalb der Firma mit einem anderen User temporär zu teilen. Quasi Abteilungsübgreifend. So, nun brauchten wir eben einen Ersatz, da dieses System (Enterprise Vault for FileArchiving) abgelöst wurde.

Aufgabenstellung klar, Powershell kann das recht simpel als Task jede Nacht wird aufgeräumt (Wichtig, die Ordnerstruktur soll erhalten bleiben):

#############################################################################
# Script um auf \\Netzlaufwerk\post alles was aelter als 6 Tage ist zu loeschen #
#############################################################################

### Konfig ###

$Postpfad = „\\Netzlaufwerk\post“
$Dateialter = (Get-Date).AddDays(-6)
$LogFile = „c:\temp\Post_datei_loeschungen.log“
$filesdelete = get-childitem $Postpfad -recurse | where {$_.lastwritetime -lt $Dateialter} | where {$_.psIsContainer-eq $false}

### Funktionen ###

###################################
# Function to write Logfile
###################################
function write_log ($Inhalt)
{
$FileExists = Test-Path $LogFile
$DateNow = Get-Date -Format „dd.MM.yyyy HH:mm“
$FileInp = $DateNow + ‚ | ‚ + $Inhalt
If ($FileExists -eq $True){
Add-Content $LogFile -value $FileInp
} else {
New-Item $Logfile -type file
Add-Content $LogFile -value $FileInp
}
}

### Ablauf ###

write_log $filesdelete

$filesdelete | % {remove-item $_.fullname -force}

Direkt mit Logfile, um im Zweifel dem User dann Sagen zu können, wann seine Datei gelöscht wurde.

Bei Fragen, gerne in die Kommentare.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.