1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
Write-Host "Ouverture fichier de parametrage: " $sFiccsv -Foregroundcolor "Gray"
$fficcsv = import-csv -Path $sFiccsv -Header "Repertoire","Jouraconserver","Typepurge"
# si on a au moins une valeur, on parcourt le fichier
If ($fficcsv -ne $null)
{
# Debut Boucle de lecture du fichier
ForEach ($sLigne In $fficcsv)
{
# Test si la ligne n'est pas vide ou ne correspond pas à l'entête
If ( ($sLigne) -and ($sLigne.Repertoire -ne "Repertoire") )
{
# Repertoire a purger
$sRepPurge = $sLigne.Repertoire
If ($sRepPurge)
{
Write-Host "Ligne en lecture : $sLigne"
$stypepurge = $sLigne.Typepurge
# Si on a qu'un seul caractère -> Type numérique
If ($size -gt 1 )
{
#Le type de purge est une chaine de caractère
$bPurge = $false
}
else
{
#Le type de purge est numérique 1, 2 ou 3
$bPurge = $True
}
# Verifie si le repertoire existe
If (Test-Path $sRepPurge)
{
# Détermine une lettre de lecteur réseau disponible
$drives = 90..65 -as [char[]]
foreach ($drive in $drives)
{
$list = Get-PSDrive | ?{$_.Root -eq $drive + ":\"}
If($list.Root -ne $drive + ":\") {
break
}
}
$driveUsed = $drive + ":"
Write-Host "Lecteur défini sur " $driveUsed -ForegroundColor Yellow
# Montage du dossier en tant que lecteur réseau
$WSHNetwork = New-Object -Com WScript.Network
try{
# $WSHNetwork.MapNetworkDrive($driveUsed, $sRepPurge)
$cmd = "net use $driveUsed $sRepPurge"
Invoke-Expression $cmd
}
catch{
Write-Error "Une erreur s’est produite lors du montage de la ressource : $($_.Exception.MEssage)"
}
# Parcours le repertoire de façon recursif avec le filtre de date pour obtenir les fichiers a supprimer
$tListeFic = Get-Childitem ($driveUsed + "\") -include $sfiltre -recurse -force |Where {$_.LastWriteTime -le "$ddernierjour" -and $_.PSisContainer -eq $false}
If ($tListeFic) # Si la liste n'est pas vide
{
ForEach ($FicASup in $tListeFic)
{
### Opération de traitement des fichiers ###
}
} else {
Write-Host "Aucun fichier à supprimer ne correspond aux critères"
}
Write-Host "Démontage de " ($driveUsed.Trim()) -ForegroundColor Yellow
# $WSHNetwork.RemoveNetworkDrive($driveUsed, $true, $false)
$cmd = "net use $driveUsed /delete /Y"
Start-Sleep -Seconds 10
Invoke-Expression $cmd
Start-Sleep -Seconds 3
}
Else
{
Write-Host "Le Repertoire $sRepPurge n'existe pas"
}
}
}
} # Fin Boucle de lecture du fichier
}
Else
{
Write-Host "Pas de valeur dans le fichier de parametre " $sFicLog
}
Write-Host "Fin Script"
# On ferme le fichier de log
Stop-Transcript |
Partager