script-v6
🧩 Syntax:
# 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"
}