# Fonction pour récupérer la dernière date de modification d'un fichier function Get-FileLastModifiedTime { param ( [string]$filePath ) try { $fileInfo = Get-Item $filePath return $fileInfo.LastWriteTime } catch { Write-Warning "Fichier introuvable : $filePath" return $null } } # Fonction pour calculer l'espace utilisé par tous les fichiers dans un répertoire function Get-UsedSpaceForClient { param ( [string]$clientDir ) $dluPath = Join-Path -Path $clientDir -ChildPath "DLU" if (Test-Path $dluPath) { # Obtenir l'espace utilisé par tous les fichiers dans DLU $totalSize = 0 Get-ChildItem -Path $dluPath -Recurse -File | ForEach-Object { $totalSize += $_.Length } return $totalSize } return 0 } # Fonction principale pour vérifier si des fichiers dans DLU datent de plus de N jours function Check-DLUFilesForClient { param ( [string]$clientDir, [int]$daysThreshold ) $dluPath = Join-Path -Path $clientDir -ChildPath "DLU" if (Test-Path $dluPath) { $currentDate = Get-Date $thresholdDate = $currentDate.AddDays(-$daysThreshold) # Parcourir les fichiers dans DLU Get-ChildItem -Path $dluPath -Recurse -File | ForEach-Object { $lastModifiedTime = Get-FileLastModifiedTime $_.FullName if ($lastModifiedTime -lt $thresholdDate) { return $true } } } return $false } # Variable de seuil pour les jours (par exemple, 30 jours) $daysThreshold = 30 # Modifiez cette valeur pour définir le seuil de jours # Parcourir tous les clients dans E:\SFTP $baseDir = "E:\SFTP" $clients = Get-ChildItem -Path $baseDir -Directory # Liste pour stocker les informations des clients $clientsWithOldFiles = @() # Vérification pour chaque client foreach ($client in $clients) { $clientPath = $client.FullName # Vérification si des fichiers sont plus vieux que le seuil spécifié if (Check-DLUFilesForClient -clientDir $clientPath -daysThreshold $daysThreshold) { # Si des fichiers plus vieux que 30 jours sont trouvés, afficher l'espace utilisé $usedSpace = Get-UsedSpaceForClient -clientDir $clientPath $usedSpaceMB = [math]::Round($usedSpace / 1MB, 2) # Convertir l'espace en Mo # Ajouter les informations du client dans la liste $clientsWithOldFiles += [PSCustomObject]@{ ClientName = $client.Name UsedSpaceMB = $usedSpaceMB } } } # Trier les clients par espace utilisé (du plus grand au plus petit) $sortedClients = $clientsWithOldFiles | Sort-Object -Property UsedSpaceMB -Descending # Affichage des résultats triés foreach ($client in $sortedClients) { Write-Host "Des fichiers dans DLU datant de plus de $daysThreshold jours pour le client $($client.ClientName)" Write-Host "Espace utilisé pour le client $($client.ClientName) : $($client.UsedSpaceMB) Mo" }