web-dev-qa-db-fra.com

Vider la corbeille pour tous les utilisateurs de Windows Server 2008 R2

Quelle est la bonne façon d'effacer la corbeille pour tous les utilisateurs dans Windows Server 2008 R2?

40
Kyle Brandt

Pour autant que je sache, ce n'est pas une façon "officielle" prise en charge par Microsoft de le faire. Il y a deux options. L'un implique la suppression de c:\$ Recycle.Bin et l'autre est un script cleanmgr.exe à exécuter à chaque ouverture de session utilisateur.

La chose la plus proche de la prise en charge "officielle" de la suppression de c:\$ Recycle.bin est celle-ci MS KB , qui fait référence à XP et Vista, mais implique le comportement attendu .


Suppression immédiate

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


Suppression de script d'ouverture de session récurrente

Vous pouvez le faire avec l'outil de nettoyage de disque (cleanmgr.exe). Malheureusement, Microsoft a décidé de regrouper cela avec l'ensemble de fonctionnalités "Expérience de 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 vers les 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 doit aller dans% systemroot%\System32.

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

Exécuter cleanmgr seul ne vous permettra pas d'effacer la corbeille de tout le monde, mais vous pouvez utiliser/sageset et/sagerun pour créer un script d'ouverture de session qui s'exécute pour tous les utilisateurs via GPO qui effacera leur corbeille sur la prochaine ouverture de session, comme décrit ici . Ce n'est pas la chose la plus propre, mais cela fonctionnera. L'article lié est pour XP, mais la syntaxe est inchangée à partir de Server 2008 R2.

34
MDMarra

Je ne pense pas qu'il existe un moyen approprié documenté car les bacs de recyclage pour les utilisateurs sont conservés séparément dans leurs profils; cela constituerait également un risque pour la sécurité, car des documents ou des éléments dans la corbeille, s'ils sont lus par les utilisateurs, pourraient permettre la fuite de certains documents.

Il peut être possible de créer un script avec un privilège administrateur pour exécuter et effacer les fichiers de la corbeille de chaque profil local (mais cela peut toujours être synchronisé avec le serveur contenant vos profils si vous avez des profils itinérants). Mais vous devez avoir les autorisations et la propriété correctement définies; Je sais que sur nos serveurs, l'administrateur n'a pas un accès approprié aux profils sur le serveur de stockage; l'administrateur doit s'approprier le profil, et lorsque nous aurons terminé, rendre la propriété à l'utilisateur approprié, sinon les profils ne fonctionneront plus correctement pour eux.

Vous pouvez essayer d'exécuter un processus à la déconnexion 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 et sera désormais disparu depuis qu'il a été supprimé lors de la dernière déconnexion.

La manière "appropriée" de le faire est probablement de configurer des quotas sur les postes de travail et les serveurs et lorsque ce quota est atteint 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 faire cela; Je maintiens l'affirmation selon laquelle ce n'est pas une méthode "correcte" car c'est 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 ' Si vous l'utilisez, vous devrez peut-être l'exécuter sur un poste 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 que ce ne soit qu'un mini-outil pour accéder à l'onglet "Nettoyage de disque" dans Windows.

Une autre pensée ... non testée ... serait d'utiliser la redirection de dossiers pour rediriger leur dossier poubelle vers un serveur central. Cependant, je classerais cela comme une mauvaise idée monumentale (tm). Ensuite, vous supprimeriez leurs fichiers de ce répertoire partagé. Lier ceci sur le réseau, la configuration de la sécurité, etc. ferait de cette tâche un niveau prioritaire qui ferait fuir les autres administrateurs système avant de s'enflammer spontanément.

9
Bart Silverstrim

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

6
Ray

Cela fonctionne pour moi: -

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

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

Ce n'est peut-être pas le code le plus élégant et il pourrait bien y avoir 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 possède sa propre corbeille; vous devez donc remplacer la lettre de lecteur par le lecteur pour lequel vous exécutez cette commande, ou vous pouvez utiliser ce qui suit 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

3
K Clethero

J'avais une corbeille qui affichait plus de 4 Go de données mais je n'ai pas pu l'effacer. Je suis entré et j'ai trouvé un tas de profils qui n'étaient plus utilisés sur le serveur et les ai supprimés sous Propriétés système - Avancé - Profils utilisateur et maintenant la corbeille est vide.

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

1
Andrew

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

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

Tous les fichiers seront supprimés du disque.

0
Rajnish Pati

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

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

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

0
Mike