Supprimer les anciens fichiers dans la corbeille avec powershell
Ok, j'ai un script que je suis en train d'écrire dans powershell qui va supprimer les anciens fichiers dans la corbeille. Je veux supprimer tous les fichiers de la corbeille qui ont été supprimés de plus de 2 jours. J'ai fait beaucoup de recherche sur ce sujet et n'ai pas trouvé une réponse appropriée.
C'est ce que j'ai à ce jour(trouvé le script en ligne, je ne sais pas beaucoup de powershell):
$Path = 'C' + ':$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
#Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
Remove-Item -Recurse -exclude *.ini -ErrorAction SilentlyContinue
C'est génial de travailler avec une exception, il vérifie le fichier de paramètre "LastWriteTime". C'est génial si l'utilisateur supprime le fichier, ils ont même jour, ils le modifient. Sinon elle échoue.
Comment puis-je modifier ce code afin qu'il va vérifier si le fichier a été supprimé, pas quand elle a été écrite.
-Sur une note de côté, si j'exécute ce script à partir d'un compte administrateur sur le Serveur Microsoft 2008 ça va fonctionner pour tous les utilisateurs de corbeilles ou juste la mienne?
Réponse:
le code qui a fonctionné pour moi est:
$Shell = New-Object -ComObject Shell.Application
$Global:Recycler = $Shell.NameSpace(0xa)
foreach($item in $Recycler.Items())
{
$DeletedDate = $Recycler.GetDetailsOf($item,2) -replace "\u200f|\u200e",""
$dtDeletedDate = get-date $DeletedDate
If($dtDeletedDate -lt (Get-Date).AddDays(-3))
{
Remove-Item -Path $item.Path -Confirm:$false -Force -Recurse
}#EndIF
}#EndForeach item
Il travaille incroyable pour moi, cependant 2 questions demeurent...Comment dois-je faire cela avec plusieurs disques? et cela s'applique à tous les utilisateurs ou seulement moi?
OriginalL'auteur Dead_Jester | 2014-04-02
Vous devez vous connecter pour publier un commentaire.
Cet article a les réponses à toutes vos questions
http://baldwin-ps.blogspot.be/2013/07/empty-recycle-bin-with-retention-time.html
Code pour la postérité:
$DeletedDate = $Recycler.GetDetailsOf($item,2) -replace "\u200f|\u200e",""
obtient ce que je recherche mais où est$Recycler
défini?Deuxième ligne du script, $Global:le Recycleur il se définit comme une variable globale.
Pourriez-vous vous déplacez sur certaines idées de l'article dans votre réponse? Nous ne pouvons pas supposer que le lien sera en vie pour toujours.
Ok, c'était une stupide erreur. Je cherchais à les exercer de son script en haut plutôt que l'ensemble du script en bas. Obtenu le code fonctionne très bien! Comment puis-je appliquer ce la même chose pour les différents lecteurs? J'en ai besoin pour faire la même chose pour E: et F:. Aussi sera-ce s'appliquent à tous les utilisateurs ou seulement moi?
Je n'ai pas beaucoup de questions. Je viens de wan quelques lignes du PS à vider la corbeille sur tous les lecteurs.
OriginalL'auteur Raf
WMF 5 comprend la nouvelle "Clair-RecycleBin" applet de commande.
OriginalL'auteur N P
Ces deux lignes de vider tous les fichiers de la corbeille:
OriginalL'auteur cmcginty
Cela fonctionne également comme un script avec le planificateur de tâches.
Clair-RecycleBin -Force
OriginalL'auteur LetzerWille
Eu à faire un peu de recherche sur moi-même, la corbeille contient les deux fichiers pour chaque fichier supprimé sur chaque disque en gagner 10 (en win 7 fichiers que est donc ce script est trop et doit être coupé, en particulier pour les powershell 2.0, win 8 non testé), une info fichier créé au moment de la suppression de $I (parfait pour la détermination de la date de suppression) et le fichier d'origine $R, j'ai trouvé l'objet com de la méthode ignorer plus de fichiers que j'ai aimé, mais sur le côté de l'info, je m'intéressais à propos de l'origine de fichiers supprimés, donc après un peu d'exploration, j'ai trouvé un simple get-contenu de l'info fichiers inclus l'emplacement du fichier d'origine, après le nettoyage, avec un peu de regex et est venu avec cette:
Pas de problème. J'ai trouvé le code peut être exécuté à partir d'un fichier avec un .ps1 extension. Pour l'exécuter, cliquez-droit sur le fichier et cliquez sur "Exécuter avec PowerShell".
OriginalL'auteur James Burleigh