Який правильний спосіб очистити кошик для всіх користувачів у 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 вирішила поєднати це з набором функцій "Настільний досвід", тобто вам доведеться встановити купу інших лайнів і перезавантажити.
Альтернатива - схопити наступні два файли та перемістити їх у вказані місця на 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, але синтаксис є незмінним, ніж для сервера 2008 R2.
cleanmgr
для запуску при кожному вході є найбільш близьким до офіційного способу MS зробити це. Альтернативою є видування папки для сміття у кожному профілі. Він повинен відтворити його на наступному вході для кожного користувача, але я трохи втомлюся спробувати це у виробництві.
Я не думаю, що існує належним чином задокументовано, оскільки кошики для користувачів зберігаються окремо у своїх профілях; це також може бути небезпечним для безпеки, оскільки документи або предмети в кошику, якщо вони будуть використані користувачами, можуть дати можливість витікати певні документи.
Можливо, сценарій з привілейованим адміністратором сценарієм може запускати та очищати файли зі сміття кожного локального профілю (але це все ще може бути синхронізовано на сервері, що містить ваші профілі, якщо у вас є роумінгові профілі). Але вам потрібно правильно встановити дозволи та право власності; Я знаю, що на наших серверах Адміністратор не має належного доступу до профілів на сервері зберігання даних; адміністратор повинен взяти на себе право власності на профіль, і коли ми закінчимо, поверніть право власності на належного користувача або в іншому випадку профілі для них більше не працюють належним чином.
Ви можете спробувати запустити процес при вході в систему, який очищає каталог кошика для кожного користувача, але це також спричиняє випадкове видалення чогось, що вони хочуть відновити пізніше, і тепер його більше не буде, оскільки він був видалений нарешті при виході з системи.
Можливо, "правильний" спосіб це зробити - це налаштувати квоти на робочих станціях та серверах, і коли ця квота потрапила для зберігання, користувач дізнається, що вони повинні видалити елементи з кошика. Через безпеку це буде питанням навчання. Інакше вам знадобиться вирішити проблему.
@markm мав пропозицію утиліти, яка, здається, робить це; Я заперечую твердження, що це не "правильний" спосіб, оскільки це надбудова і не вбудований у Windows за замовчуванням (хоча я не здивований, що корисна утиліта адміністрування не включена.) Єдина інша проблема, яку я " Будьте хвилюєтесь щодо його використання в тому, що це, можливо, доведеться запускати на робочій станції та на сервері, або у вас можуть виникнути проблеми синхронізації профілю з тим, що з’являється де. Схоже, це повинен бути лише міні-інструмент для доступу до вкладки "очищення диска" в Windows.
Іншою думкою ... неперевіреною ... було б використовувати переадресацію папок для перенаправлення своєї папки на смітник на центральний сервер. Я б класифікував це як монументально погана ідея (tm), однак. Потім ви видалите їх файли з цього спільного каталогу. Пов'язуючи це через мережу, налаштування безпеки тощо, це зробить цей рівень першочерговим хитком, що змусить інших сисадмінів тікати перед тим, як самовільно спалити.
Я запустив 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 ГБ даних, але я не зміг його очистити. Зайшов і знайшов купу профілів, які більше не використовувались на сервері, і видалив їх у системних властивостях - Advanced - User Profiles, і тепер кошик порожній.
Очевидно, не видаляйте жодного облікового запису, який досі є поточним або використовується, але як адміністратор, ви можете це зробити так.
Це рішення мені сподобалось, тому що це легко зрозуміти, що він робить, і це робить роботу, але для того, щоб працювати з будь-якого місця, з якого ви запускаєте команду, потрібно запустити її змінити так (додавши \ після "drive_letter: ") і щоб мати змогу видалити ці папки від інших користувачів .. вам потрібно додати" -force "в кінці команди delete element. Крім того, коли ви видаляєте всі папки в межах C: \ $ Recycle.bin \, вам не потрібно включати "-recurse" при отриманні дочірніх елементів. Отже, це буде остаточна команда, яку я б використав:
Get-ChildItem "C:` $ Recycle.bin \ "-Force | Remove-Item -Recurse -force -WhatIf
видалення -Що якщо ви хочете зробити більше, ніж лише тестування команди
Використовуйте процес нижче, щоб видалити всі файли.
Усі файли будуть видалені з диска.