Очистить корзину для всех пользователей в Windows Server 2008 R2

Как правильно очистить корзину для всех пользователей в Windows Server 2008 R2?

7 ответов

Решение

Насколько я могу судить, это не "официальный" способ, поддерживаемый Microsoft. Есть два варианта. Один включает удаление c:\$Recycle.Bin, а другой - создание сценария cleanmgr.exe для запуска при каждом входе пользователя в систему.

Ближайшая вещь к "официальной" поддержке удаления c:\$Recycle.bin - из этого MS KB, который ссылается на XP и Vista, но подразумевает ожидаемое поведение.


Немедленное удаление

Если вы хотите, чтобы это произошло немедленно, кажется, что вы можете просто запустить rd /s c:\$Recycle.Bin и Windows должна заново создать необходимые папки в следующий раз, когда они понадобятся. Я только что проверил это быстро, и это, кажется, работает, но, очевидно, действуйте с осторожностью.


Повторяющееся удаление по сценарию входа

Вы можете сделать это с помощью инструмента очистки диска (cleanmgr.exe). К сожалению, Microsoft решила объединить это с набором функций "Desktop Experience", что означает, что вам придется установить кучу других дерьмов и перезагрузить компьютер.

Альтернатива состоит в том, чтобы взять следующие два файла и переместить их в указанные местоположения в 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 должен идти в%systemroot%\System32.

Файл Cleanmgr.exe.mui должен находиться в%systemroot%\System32\en-US.

Один только запуск cleanmgr не позволит вам очистить все корзины, но вы можете использовать /sageset и /sagerun для создания сценария входа, который будет запускаться для всех пользователей через GPO, который очистит их корзину при следующем входе в систему, как описано здесь. Это не самая чистая вещь, но это будет работать. Связанная статья предназначена для XP, но синтаксис не изменился с Server 2008 R2.

Я не думаю, что есть надлежащий путь, документированный, поскольку корзины для пользователей хранятся отдельно в их профилях; это также может представлять угрозу безопасности, поскольку документы или предметы в корзине, если они просматриваются пользователями, могут допускать утечку определенных документов.

Возможно, можно создать сценарий с привилегированными правами администратора для запуска и очистки файлов из корзины каждого локального профиля (но он все равно может быть синхронизирован с сервером, на котором хранятся ваши профили, если у вас есть перемещаемые профили). Но вам нужно правильно установить права доступа и права собственности; Я знаю, что на наших серверах администратор не имеет надлежащего доступа к профилям на сервере хранения; администратор должен взять на себя владение профилем, и когда мы закончим, верните право собственности соответствующему пользователю, иначе профили больше не будут работать для него должным образом.

Вы можете попробовать запустить процесс при выходе из системы, который очищает каталог мусора для каждого пользователя, но это также влечет за собой случайное удаление чего-то, что он хочет восстановить позже, и теперь будет удалено, поскольку оно было удалено при последнем выходе из системы.

Вероятно, "правильный" способ сделать это - настроить квоты на рабочих станциях и серверах, и когда эта квота используется для хранения, пользователь узнает, что ему нужно удалять элементы из корзины. Из-за безопасности это было бы проблемой обучения. В противном случае вам понадобится обходной путь.

У @markm было полезное предложение, которое, кажется, делает это; Я поддерживаю утверждение, что это не "правильный" способ, так как это надстройка, которая не встроена в Windows по умолчанию (хотя я не удивлен, что полезная утилита администрирования не включена). Единственная другая проблема, которую я имею " Я беспокоюсь о том, чтобы использовать его из-за того, что он может быть запущен на рабочей станции и на сервере, или у вас могут возникнуть проблемы с синхронизацией профилей с тем, что и где появляется. Похоже, это просто мини-инструмент для доступа к вкладке "Очистка диска" в Windows.

Другая мысль... непроверенная... состояла в том, чтобы использовать перенаправление папок для перенаправления их папки с мусором на центральный сервер. Однако я бы отнес это к монументально плохой идее. Затем вы удалите их файлы из этого общего каталога. Связывание этого по сети, настройка безопасности и т. Д. Сделало бы это первоочередным приоритетом, который, однако, заставил бы других системных администраторов убежать до самопроизвольного сгорания.

Я запустил TreeSize Free и увидел, что у меня в корзине было 15 гигов, но я этого не видел, возможно, потому, что это сделал давно ушедший пользователь. Но в TreeSize Pro я мог удалить его, что поместило данные в корзину, которую я мог видеть.

Это работает для меня:-

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

Это удалит recycle.bin; Windows заново создаст корзину как требуется, то есть, как только пользователь удалит новый файл.

Это может быть не самый элегантный код, и, возможно, есть лучший способ сделать это, но это поможет освободить место на перегруженном сервере. Вы можете проверить это с помощью ключа -WhatIf команды Remove-Item.

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

Примечание: каждый диск имеет свою собственную корзину; поэтому вам нужно заменить букву диска на тот диск, для которого вы запускаете эту команду, или вы можете использовать следующее для всех локальных дисков:

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 }

Надеюсь это поможет

У меня была корзина с 4 ГБ данных, но я не смог ее очистить. Зашел и нашел кучу профилей, которые больше не использовались на сервере, и удалил их в свойствах системы - Дополнительно - Профили пользователей, и теперь корзина пуста.

Очевидно, не удаляйте учетные записи, которые все еще используются или используются, но как администратор, вы можете сделать это таким образом.

Используйте процесс ниже, чтобы удалить все файлы.

  1. войти в систему как администратор пользователя и исследовать диск c
  2. снят флажок скрыть защищенный файл операционной системы от параметров папки
  3. просмотрите папку $Recycle.Bin
  4. удалить все файлы и папки
  5. очистить корзину

Все файлы будут удалены с диска.

Мне понравилось это решение, потому что легко понять, что оно делает, и оно выполняет свою работу, но чтобы работать из любого места, из которого вы запускаете команду, вам нужно запустить изменить его следующим образом (добавив \ после "drive_letter:") и чтобы иметь возможность удалить эту папку от других пользователей.. вам нужно добавить" -force "в конце команды remove-item. Кроме того, поскольку вы удаляете все папки в C:\$Recycle.bin\, вам не нужно включать "-recurse" при получении дочерних элементов. Так что это будет последняя команда, которую я бы использовал вместо:

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

удаление -WhatIf, если вы хотите сделать больше, чем просто тестирование команды

Другие вопросы по тегам