Question Probleme script avec une variable

Plus d'informations
il y a 14 ans 11 mois #9722 par Leharivel
Bonjour,

J'ai un problème concernant mon script powershell

Mon script permet de supprimer les fichiers qui sont antérieure à 30 jours par rapport à la date d'aujourd'hui

Ce script fonctionne pour un nombre de fichiers d'environ 1000

Mais sur mon serveur de fichier cela peux monter à plus de 200 000 fichiers

Pour exemple :

Mon serveur à 8 Go de Ram

Quand je lance mon script la mémoire est en saturation

Process du script powershell 7 856 555 Ko et mon serveur est en freeze

Savez vous comment je peux faire pour que cela fonctionne ?

# Début du script

# Déclaration des variables
$mydata = D:\temp
$jour = Get-Date
$lastmod = $jour.AddDays(-30)

# requête

$Files = get-childitem $mydata -include *.* -recurse |Where {$_.LastWriteTime -le \"$lastmod\"}

# Action pour chaque enregistrement de la variable $Files

foreach ($File in $Files)
{
write-host \"Deleting File $File\" -foregroundcolor \"Red\"; # Remove-Item $File | out-null
}

# Fin du script

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 11 mois #9723 par xyz
Réponse de xyz sur le sujet Re:Probleme script avec une variable
Salut,
utilise un seul pipe, ainsi tu ne contruiras pas de liste en mémoire:
[code:1]
Get-ChildItem $mydata -include *.* -recurse|
Where {$_.LastWriteTime -le \"$lastmod\"}|
Remove-Item $File -Verbose| out-null
[/code:1]
Mais pour les traitements de masse sur les fichiers PS est à la peine, tu peux rechercher sur le forum d'autre posts qui traite du sujet.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 11 mois #9758 par Leharivel
En utilisant mon script comment je pourrai faire pour utiliser while avec une incrémentation

exemple

while ($i, ma commande, $i++)

Je pense que cela pourrai résoudre mon problème lorsque j'ai un nombre important de fichier

Merci de futur réponses

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 11 mois #9773 par Leharivel
Bonjour,

j'ai trouver cela:

# debut du while

$deleted = 0
while (???)
{
Get-ChildItem $mydata -include *.* -recurse | Where {$_.LastWriteTime -le \"$lastmod\"} | Remove-Item | out-null

$deleted++
}

# fin du while

Mon but et de supprimer des fichiers dans un dossier ou je ne connais pas le nombre de dossier et de fichier.

La chose qui me manque, qu'elle est la condition que je dois mettre pour que le while arrete de fonctionner

exemple lorsqu'il n'y a plus de fichier à supprimer

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.047 secondes
Propulsé par Kunena