Effacer la corbeille pour tous les utilisateurs dans Windows Server 2008 R2

Réponses:

34

Autant que je sache, ce n’est pas un moyen "officiel" de supporter Microsoft. Il y a deux options. L'une implique la suppression de c: \ $ Recycle.Bin et l'autre le script cleanmgr.exe à exécuter à chaque ouverture de session utilisateur.

La chose la plus proche de soutien « officiel » pour la suppression de c: \ $ Recycle.Bin est de ce MS KB , qui fait référence à XP et Vista, mais implique le comportement attendu.


Suppression immédiate

Si vous souhaitez que cela se produise immédiatement, il semble que vous pouvez simplement exécuter rd /s c:\$Recycle.Binet Windows doit recréer les dossiers nécessaires la prochaine fois qu'ils sont nécessaires. Je viens de tester cela rapidement et cela semble fonctionner, mais évidemment, procédez avec prudence.


Suppression récurrente scriptable

Vous pouvez le faire avec l'outil Nettoyage de disque (cleanmgr.exe). Malheureusement, Microsoft a décidé de l’associer à l’ensemble de fonctionnalités "Expérience sur le bureau", ce qui signifie que vous devrez installer un tas d’autres conneries et redémarrer.

L'alternative consiste à récupérer les deux fichiers suivants et à les déplacer aux emplacements spécifiés par Technet :

C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr_31bf3856ad364e35_6.1.7600.16385_none_c9392808773cd7da\cleanmgr.exe
C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr.resources_31bf3856ad364e35_6.1.7600.16385_en-us_b9cb6194b257cc63\cleanmgr.exe.mui

Cleanmgr.exe devrait aller dans% systemroot% \ System32.

Cleanmgr.exe.mui doit aller dans% systemroot% \ System32 \ en-US.

Exécuter cleanmgr seul ne vous laissera pas vider la corbeille de tout le monde, mais vous pouvez utiliser / sageset et / sagerun pour créer un script de connexion qui s'exécute pour tous les utilisateurs via un objet de stratégie de groupe qui effacera leur corbeille lors de la prochaine ouverture de session, comme décrit ici . Ce n'est pas la chose la plus propre, mais ça va marcher. L'article lié est pour XP, mais la syntaxe n'a pas été modifiée depuis Server 2008 R2.

MDMarra
la source
A fait un peu de recherche à ce sujet, il y avait ce lien qui élabore un peu. social.technet.microsoft.com/Forums/fr-FR/winserverManagement/…
Bart Silverstrim
Testé, cela ne le résout pas pour tous les utilisateurs. Vous ne voulez pas vraiment avoir à contacter notre sous-traitant et lui demander de vous connecter simplement pour supprimer des fichiers ...
Kyle Brandt
Oui, je peux confirmer ce comportement aussi. Il semble que l'un ou l'autre des scripts cleanmgrà exécuter à chaque connexion est ce qui se rapproche le plus d'une méthode officielle de la part des États membres. L'alternative consiste à supprimer le dossier de la corbeille de chaque profil. Il devrait être recréé lors de la prochaine connexion pour chaque utilisateur, mais je serais un peu fatigué d'essayer cela en production.
MDMarra
Plus d'informations sur l'automatisation de CleanMgr ici ... stackoverflow.com/a/35214197/80161
Nathan Hartley
9

Je ne pense pas qu'il y ait une manière appropriée de documenter car les corbeilles pour les utilisateurs sont séparées dans leurs profils; cela constituerait également un risque de sécurité à autoriser car des documents ou des éléments de la corbeille, s'ils étaient consultés par les utilisateurs, pourraient permettre la fuite de certains documents.

Il est peut-être possible de créer un script avec un script avec privilèges d’administrateur pour exécuter et effacer les fichiers de la corbeille de chaque profil local (mais cela peut tout de même être synchronisé avec le serveur contenant vos profils si vous avez des profils itinérants). Cependant, vous devez définir correctement les autorisations et la propriété. Je sais que sur nos serveurs, l'administrateur n'a pas accès aux profils du serveur de stockage. l'administrateur doit s'approprier le profil et lorsque nous en avons terminé, il revient à l'utilisateur approprié, sinon les profils ne fonctionnent plus correctement pour eux.

Vous pouvez essayer d’exécuter un processus à la fermeture de session qui efface le répertoire de la corbeille par utilisateur, mais cela implique également la suppression accidentelle de quelque chose qu’ils souhaitent récupérer plus tard.

La meilleure façon de procéder consiste probablement à configurer des quotas sur les postes de travail et les serveurs. Lorsque ce quota est utilisé pour le stockage, l'utilisateur apprend qu'il doit supprimer des éléments de la corbeille. Pour des raisons de sécurité, ce serait un problème de formation. Sinon, vous auriez besoin d'une solution de contournement.

@markm avait une suggestion d'utilitaire qui semble le faire; Je maintiens l'affirmation selon laquelle ce n'est pas une méthode "correcte", car il s'agit d'un module complémentaire et non intégré à Windows par défaut (bien que je ne sois pas surpris que l'utilitaire d'administration utile ne soit pas inclus.) Le seul autre problème que je connaisse Vous craignez de l’utiliser, c’est qu’il devra peut-être être exécuté sur une station de travail et sur le serveur, ou vous pourriez avoir des problèmes de synchronisation de profil avec ce qui apparaît où. Il semble qu’il s’agisse d’un mini-outil permettant d’accéder à l’onglet "Nettoyage du disque" de Windows.

Une autre idée ... non testée ... consisterait à utiliser la redirection de dossiers pour rediriger leur dossier Corbeille vers un serveur central. Je classerais cela comme une monumentale mauvaise idée (tm), cependant. Ensuite, vous supprimeriez leurs fichiers de ce répertoire partagé. Le fait de le relier via le réseau, la configuration de la sécurité, etc. en ferait une priorité de niveau 1 qui ferait fuir les autres administrateurs systèmes avant leur combustion spontanée.

Bart Silverstrim
la source
Le nettoyage de disque exécuté en tant qu'utilisateur privilégié ne frappe pas la corbeille de tout le monde?
MDMarra
J'espère que même si cela ne permet pas de faire le ménage dans un PITA. Dans un environnement partagé, tel qu'un serveur de terminal, potentiellement dangereux.
Rob Moir
Hm, intéressant. On dirait que j'ai besoin de tester ça.
MDMarra
Je l'ai effacé lorsque la réponse de @ MarkM semblait la plus canonique, mais il semble que cela ne fonctionne pas pour tous les utilisateurs après que KyleBrandt l'a testée. Je pense qu'il n'existe aucun moyen documenté de le faire correctement pour des raisons de sécurité, très probablement ... la possibilité de supprimer les données d'autres utilisateurs, car la corbeille fait partie de leur profil (itinérant) pourrait constituer un risque pour la sécurité.
Bart Silverstrim
Supprimé ma réponse, c'est.
Bart Silverstrim
6

J'ai utilisé TreeSize Free et ai vu que j'avais 15gigs dans la corbeille, mais je ne pouvais pas le voir, probablement parce que cela avait été fait par un utilisateur depuis longtemps disparu. Mais dans TreeSize Pro, je pouvais le supprimer, ce qui mettait les données dans la corbeille que je pouvais voir.

Rayon
la source
8
WinDirStat aurait pu le faire gratuitement. C’est mon outil indispensable lorsque je dois déterminer ce qui utilise tout l’espace disponible sur un disque dur. Vous pouvez cliquer avec le bouton droit sur un fichier ou un dossier et le supprimer de la corbeille ou de manière permanente. Vous pouvez également cliquer avec le bouton droit de la souris et ouvrir une fenêtre de l'explorateur ou une invite de commande. Il n'a également aucun scrupule à vous montrer toutes les corbeilles des utilisateurs, bien que vous deviez rechercher les SID et les faire correspondre vous-même à chaque utilisateur.
JamesH
3

Cela fonctionne pour moi: -

Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force

Il va supprimer le recycle.bin; Windows recrée la corbeille selon les besoins, c'est-à-dire dès qu'un utilisateur supprime un nouveau fichier.

Le code le plus élégant n’est peut-être pas le meilleur et il existe peut-être une meilleure façon de le faire, mais cela aidera à libérer de l’espace sur un serveur encombré. Vous pouvez le tester à l'aide du commutateur -WhatIf de la commande Remove-Item.

Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force -WhatIf

NB: chaque lecteur conserve sa propre corbeille. vous souhaitez donc remplacer la lettre de lecteur par le lecteur pour lequel vous exécutez cette commande, ou vous pouvez utiliser les éléments suivants pour tous les lecteurs locaux:

Get-PSProvider -PSProvider FileSystem `
| Select-Object -ExpandProperty Drives `
| Where-Object { $_.DisplayRoot -notlike "\\*" } `
| Select-Object -ExpandProperty Root `
| ForEach-Object { "$_`$Recycle.bin\" } `
| Where-Object { Test-Path -Path $_ -PathType Container } `
| ForEach-Object { Get-ChildItem -Path $_ -Force | Remove-Item -Recurse -Force }

J'espère que cela t'aides

K Clethero
la source
1

J'avais une corbeille qui affichait plus de 4 Go de données, mais je ne pouvais pas la vider. Entré et trouvé un tas de profils qui ne sont plus utilisés sur le serveur et les a supprimés sous les propriétés du système - Avancé - Profils utilisateur et maintenant la corbeille est vide.

Évidemment, ne supprimez pas les comptes encore en cours ou en cours d'utilisation, mais en tant qu'administrateur, vous pouvez le faire de cette façon.

Andrew
la source
0

J'ai aimé cette solution car il est facile de comprendre ce qu'elle fait et fait le travail, mais pour pouvoir travailler à partir de n'importe quel emplacement depuis lequel vous exécutez la commande, vous devez exécuter le changement comme ceci (en ajoutant un \ après le "drive_letter: ") et pour pouvoir supprimer ces dossiers d’autres utilisateurs .. vous devez ajouter le" -force "à la fin de la commande remove-item. De plus, étant donné que vous supprimez tous les dossiers de C: \ $ Recycle.bin \, vous n'avez pas besoin d'inclure "-recurse" lors de l'obtention des éléments enfants. Donc ce sera la dernière commande que j'utiliserais à la place:

Get-ChildItem "C:` $ Recycle.bin \ "-Force | Supprimer-élément -Recurse -force -WhatIf

enlever -WhatIf si vous voulez faire plus que simplement tester la commande

Mike
la source
0

Utilisez le processus ci-dessous pour supprimer tous les fichiers.

  1. connectez-vous en tant qu'administrateur et explorez le lecteur c
  2. décoché masquer le fichier du système d'exploitation protégé à partir des options de dossier
  3. parcourir le dossier $ Recycle.Bin
  4. supprimer tous les fichiers et dossiers
  5. vide ta corbeille

Tous les fichiers seront supprimés du disque.

Rajiish Pati
la source