bleppsatter
Goto Top

PS: Projektablage nach Änderungen filtern

Hallo Community,

ich habe die Aufgabe, eine Projektablage zu durchsuchen und alle Projekte, an denen seit Zeitspanne x (als Beispiel 6 Monate) nicht mehr gearbeitet wurde, also das Änderungsdatum aller enthaltenen Dateien soll vor 6 Monaten datiert sein. Da die Projektablage zudem sehr verschachtelt ist, soll natürlich auch rekursiv gesucht werden. Als Ergebnis soll dann eine CSV-ähnliche* Datei rauskommen, in der alle "alten" Projekte enthalten sind mit dem Namen des Projektordners, der Größe des Projektordners und idealerweise das Änderungsdatum der zuletzt bearbeiteten Datei. Die Ausgabe des Änderungsdatums muss nicht zwingend enthalten sein, aber es muss im Skript zumindest eine verlässliche Prüfung geben. Das ganze soll das in einem Powershell-Skript ablaufen, welches ich auch schon habe, allerdings werden mir dann auch Projekte angezeigt, an denen sogar noch vor einer Woche gearbeitet wurde. Hier der Code:

$shareName = "E:"  

$2MinutenAlt=(Get-Date).AddMinutes(-2)
$1TagAlt = (Get-Date).AddDays(-259)
$6MonateAlt=(Get-Date).AddMonths(-6)
$2JahreAlt=(Get-Date).AddYears(-2)
$3JahreAlt=(Get-Date).AddYears(-3)

$OutputFile="C:\temp\alteProjekte.txt"  

$DateiAlter=$6MonateAlt  # Zuweisung, die benutzt wird

#Nur die Verzeichnisse, nicht die unterverzeichnisse
$directories = Get-ChildItem -Path $shareName -Directory

#andere ps1 file einbinden 
. [...]\Get-FolderSize.ps1
$Verzeichnisgroesse

ForEach ( $d in $directories ) 
{ 
        
    $recentWrites = $False
    ForEach ($file in Get-Childitem –recurse $d -File -ErrorAction SilentlyContinue)
    {
        
      If ($file.LastWriteTime -gt $DateiAlter)  #Da exitiert eine Datei ist, die neuer ist                
                {
                 $recentWrites = $True
                }
        
        
    }#for innerhalb eines Projektverzeichnises rekursiv
           
    If ( !$recentWrites ) 
    {
        $Verzeichnisgroesse = Get-FolderSize -path $d.FullName
        Write-Output "$d;$Verzeichnisgroesse"         
    }    
            
} 

Langsam bin ich auch mit meinem Wissen und Vermutungen am Ende und hoffe, dass jemand von euch mir den richtigen Ansatz zeigen kann.

Grüße
BleppSatter

Content-Key: 363973

Url: https://administrator.de/contentid/363973

Printed on: June 24, 2024 at 16:06 o'clock

Mitglied: 135333
Solution 135333 Feb 07, 2018 updated at 14:59:13 (UTC)
Goto Top
gci "E:" -Directory | ?{(gci $_.FullName -Recurse -File -Force -EA Ignore | ?{$_.LastWriteTime -gt (get-date).AddMonths(-6)})} | %{  
    $files = gci $_.Fullname -Force -File -Recurse -EA Ignore
    $size = $files | measure -Sum Length | select -Expand Sum
    $lastedit = $files | sort LastWriteTime -Descending | select -First 1 -Expand LastWriteTime
    [pscustomobject]@{Path=$_.Fullname;Size=$size;LastEdit=$lastEdit}
}
Zum Export dann einfach ein Export-CSV in die Pipe hängen face-wink.

Gruß snap
Member: BleppSatter
BleppSatter Feb 07, 2018 at 15:19:58 (UTC)
Goto Top
Wow, danke für die schnelle Antwort. Dein Skript macht genau das, was ich wollte.