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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 363973
Url: https://administrator.de/contentid/363973
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
2 Kommentare
Neuester Kommentar
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}
}
Gruß snap