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

Ответы:

34

Насколько я могу судить, это не «официальный» способ, поддерживаемый 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.

MDMarra
источник
Сделал небольшое исследование, была эта связь, которая немного проработала. social.technet.microsoft.com/Forums/en-US/winserverManagement/…
Барт Сильверстрим
Протестировано, это не ясно для всех пользователей. Не очень хочется связываться с нашим подрядчиком и заставлять его войти только для того, чтобы удалить некоторые файлы ...
Кайл Брандт
Да, я могу также подтвердить это поведение. Кажется, что любой сценарий cleanmgrдля запуска при каждом входе в систему является наиболее близким к официальному способу MS сделать это. Альтернативой является удаление папки корзины на каждом профиле. Он должен воссоздать его при следующем входе в систему для каждого пользователя, но я бы немного устал, чтобы попробовать это в работе.
MDMarra
Подробнее об автоматизации CleanMgr здесь ... stackoverflow.com/a/35214197/80161
Натан Хартли
9

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

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

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

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

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

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

Барт Сильверстрим
источник
Очистка диска запускается как повышенный пользователь, не попадает в корзину каждого?
MDMarra
Надеюсь, что нет, даже если это приведёт в порядок PITA. В общедоступной среде, такой как терминальный сервер, который может быть опасным.
Роб Мойр
Хм, интересно. Похоже, мне нужно проверить это.
MDMarra
Я удалил его, когда ответ @ MarkM казался наиболее канонически обоснованным, но похоже, что он не работает для всех пользователей после того, как KyleBrandt проверил его. Я думаю, что не существует документированного способа сделать это должным образом из-за безопасности, скорее всего ... возможность удалять вещи других пользователей, так как мусор является частью их (роумингового) профиля, может быть угрозой безопасности.
Барт Сильверстрим
То есть мой ответ удален.
Барт Сильверстрим
6

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

луч
источник
8
WinDirStat мог бы сделать это бесплатно. Это мой инструмент, когда мне нужно выяснить, что занимает все пространство на жестком диске. Вы можете щелкнуть правой кнопкой мыши файл или папку и удалить их в корзину или навсегда, вы также можете щелкнуть правой кнопкой мыши и открыть там окно проводника или командную строку. Он также не стесняется показывать вам все корзины пользователей, хотя вам нужно найти SID и сопоставить их с каждым пользователем самостоятельно.
JamesH
3

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

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 }

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

К Клетеро
источник
1

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

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

Эндрю
источник
0

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

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

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

Майк
источник
0

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

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

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

Райниш Пати
источник