Quelle est la bonne manière de vider la corbeille pour tous les utilisateurs dans Windows Server 2008 R2 ?
Réponses
Trop de publicités?Au mieux de ce que je peux dire, il n'y a pas de façon "officielle" soutenue par Microsoft de le faire. Il y a deux options. L'une implique la suppression de c:\$Recycle.Bin et l'autre consiste à exécuter cleanmgr.exe par script à chaque ouverture de session utilisateur.
La chose la plus proche du support "officiel" pour supprimer c:\$Recycle.bin provient de ce KB de MS, 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 devrait recréer les dossiers nécessaires la prochaine fois qu'ils sont nécessaires. J'ai juste testé cela rapidement et il semble que cela fonctionne, mais - évidemment - procédez avec prudence.
Suppression programmable de connexion 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 Bureau", ce qui signifie que vous devrez installer beaucoup d'autres choses et redémarrer.
L'alternative est de récupérer les deux fichiers suivants et de les déplacer aux emplacements spécifiés selon 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 doit aller dans %systemroot%\System32\en-US.
Exécuter cleanmgr seul ne vous permettra pas de vider la corbeille de tout le monde, mais vous pouvez utiliser /sageset et /sagerun pour créer un script de connexion qui s'exécutera pour tous les utilisateurs via GPO et qui videra leur corbeille à la prochaine connexion, comme décrit ici. Ce n'est pas la manière la plus propre, mais ça fonctionnera. L'article lié est pour XP, mais la syntaxe est inchangée depuis Server 2008 R2.
Je ne pense pas qu'il y ait une méthode appropriée documentée car les corbeilles de recyclage des utilisateurs sont conservées séparément dans leurs profils; cela pourrait également être un risque de sécurité de permettre cela car des documents ou des éléments dans la corbeille de recyclage, s'ils sont examinés par les utilisateurs, pourraient permettre la fuite de certains documents.
Il pourrait être possible de scripter un script privilégié d'administrateur pour exécuter et effacer les fichiers de la corbeille de chaque profil local (mais cela pourrait toujours être synchronisé sur le serveur qui contient vos profils si vous avez des profils itinérants). Mais vous devez avoir des autorisations et des propriétés 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 prendre possession du profil, et une fois que nous avons terminé, retourner la propriété à l'utilisateur approprié sinon les profils ne fonctionnent plus correctement pour eux.
Vous pourriez essayer d'exécuter un processus à la déconnexion qui efface le répertoire de la corbeille par utilisateur, mais cela implique également de supprimer accidentellement quelque chose qu'ils souhaitent récupérer ultérieurement et qui sera donc disparu puisqu'il a été supprimé à la dernière déconnexion.
Probablement la façon "correcte" de le faire est 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 de recyclage. En raison de la sécurité, cela serait un problème de formation. Sinon, vous auriez besoin d'une solution de contournement.
@markm a suggéré un utilitaire qui semble le faire; je maintiens l'affirmation que ce n'est pas une façon "correcte" car c'est un addon et n'est pas intégré par défaut dans Windows (bien que je ne sois pas surpris que cet utilitaire d'administration utile ne soit pas inclus.) Le seul autre problème auquel je penserais en l'utilisant est qu'il pourrait devoir être exécuté sur un poste de travail et sur le serveur sinon vous pourriez avoir des problèmes de synchronisation de profils avec ce qui apparaît où. Il semble censé être juste 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 dossier pour rediriger leur dossier de corbeille vers un serveur central. Je classerais cela comme une idée monumentalement mauvaise(tm), cependant. Ensuite, vous supprimeriez leurs fichiers de ce répertoire partagé. Connecter cela via le réseau, configuration de sécurité, etc. en ferait une solution de contournement de niveau un qui ferait fuir les autres administrateurs système avant de s'enflammer spontanément, cependant.
J'ai exécuté TreeSize Free et j'ai vu que j'avais 15 gigas 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, j'ai pu le supprimer, ce qui a mis les données dans la Corbeille que je pouvais voir.
Cela fonctionne pour moi:-
Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force
Il supprimera la corbeille; Windows recréera la corbeille au besoin, c'est-à-dire dès qu'un utilisateur supprime un nouveau fichier.
Peut-être pas le code le plus élégant et il y a probablement une meilleure façon de le faire, mais cela aidera à libérer de l'espace sur un serveur congestionné. Vous pouvez le tester en utilisant l'option -WhatIf sur la commande Remove-Item.
Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force -WhatIf
NB: Chaque lecteur maintient sa propre corbeille; donc vous voudriez remplacer la lettre du lecteur par celui 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 vous aidera
J'avais une corbeille de recyclage qui affichait plus de 4 Go de données mais je n'arrivais pas à la vider. Je suis allé et j'ai trouvé un tas de profils qui n'étaient plus utilisés sur le serveur et je les ai supprimés sous les propriétés système - Avancé - Profils d'utilisateurs et maintenant la corbeille de recyclage est vide.
Évidemment, ne supprimez pas les comptes qui sont toujours en cours d'utilisation, mais en tant qu'administrateur, vous pouvez le faire de cette manière.
- Réponses précédentes
- Plus de réponses