Назад | Перейти на главную страницу

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

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

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

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


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

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


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

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

Альтернативный вариант - захватить следующие два файла и переместить их в указанные места на каждый Технет:

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

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

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 ГБ данных, но я не смог ее очистить. Зашел и нашел кучу профилей, которые больше не использовались на сервере, и удалил их в свойствах системы - Дополнительно - Профили пользователей, и теперь корзина пуста.

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

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

Get-ChildItem "C:` $ Recycle.bin \ "-Force | Удалить элемент -Recurse -force -WhatIf

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

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

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

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