Jaki jest właściwy sposób na wyczyszczenie kosza dla wszystkich użytkowników w systemie Windows Server 2008 R2?
Jaki jest właściwy sposób na wyczyszczenie kosza dla wszystkich użytkowników w systemie Windows Server 2008 R2?
Odpowiedzi:
O ile wiem, nie jest to „oficjalny” sposób obsługiwany przez Microsoft. Istnieją dwie opcje. Jeden z nich polega na usunięciu c: \ $ Recycle.Bin, a drugi to wykonanie skryptu cleanmgr.exe w celu uruchomienia przy każdym logowaniu użytkownika.
Najbliższa rzecz do „oficjalnej” obsługi usuwania c: \ $ Recycle.bin pochodzi z tego MS KB , który odwołuje się do XP i Visty, ale sugeruje oczekiwane zachowanie.
Jeśli chcesz, aby stało się to natychmiast, wydaje się, że możesz po prostu uruchomić, rd /s c:\$Recycle.Bin
a system Windows powinien ponownie utworzyć niezbędne foldery następnym razem, gdy będą potrzebne. Właśnie to przetestowałem szybko i wydaje się, że działa, ale - oczywiście - postępuj ostrożnie.
Możesz to zrobić za pomocą narzędzia Oczyszczanie dysku (cleanmgr.exe). Niestety Microsoft zdecydował się połączyć to z zestawem funkcji „Desktop Experience”, co oznacza, że będziesz musiał zainstalować kilka innych badziewi i zrestartować komputer.
Alternatywą jest pobranie następujących dwóch plików i przeniesienie ich do określonych lokalizacji według 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 powinien przejść w% systemroot% \ System32.
Cleanmgr.exe.mui powinien przejść do katalogu% systemroot% \ System32 \ en-US.
Samo uruchomienie cleanmgr nie pozwoli ci wyczyścić kosza dla wszystkich, ale możesz użyć / sageset i / sagerun, aby utworzyć skrypt logowania, który będzie działał dla wszystkich użytkowników przez GPO, który wyczyści ich kosz przy następnym logowaniu, jak opisano tutaj . To nie jest najczystsza rzecz, ale zadziała. Połączony artykuł dotyczy XP, ale składnia pozostaje niezmieniona od wersji Server 2008 R2.
cleanmgr
uruchamiane przy każdym logowaniu są najbliższą oficjalną metodą MS. Alternatywą jest wysadzenie folderu kosza na każdym profilu. To powinno odtworzyć go na następnym logowaniu dla każdego użytkownika, ale byłbym trochę zmęczony spróbować tego w produkcji.
Nie sądzę, aby istniał odpowiedni sposób udokumentowany, ponieważ kosze na śmieci dla użytkowników są przechowywane osobno w swoich profilach; byłoby to również niebezpieczne ze względu na bezpieczeństwo, ponieważ dokumenty lub przedmioty w koszu, jeśli zostały przejrzane przez użytkowników, mogą pozwolić na wyciek niektórych dokumentów.
Możliwe może być wykonanie skryptu z uprawnieniami administratora do uruchamiania i usuwania plików z kosza każdego profilu lokalnego (ale nadal może być zsynchronizowany z serwerem przechowującym profile, jeśli masz profile mobilne) Ale musisz mieć odpowiednio ustawione uprawnienia i prawa własności; Wiem, że na naszych serwerach Administrator nie ma odpowiedniego dostępu do profili na serwerze pamięci; administrator musi przejąć na własność profil, a kiedy skończymy, zwróć własność właściwemu użytkownikowi, w przeciwnym razie profile nie będą już dla nich działać poprawnie.
Możesz spróbować uruchomić proces przy wylogowywaniu, który usuwa katalog kosza na użytkownika, ale pociąga za sobą również przypadkowe usunięcie czegoś, co chce odzyskać później i którego już nie ma, ponieważ został on usunięty przy ostatnim wylogowaniu.
Prawdopodobnie „właściwym” sposobem na to jest skonfigurowanie przydziałów na stacjach roboczych i serwerach, a kiedy ten przydział zostanie wykorzystany do przechowywania, użytkownik dowiaduje się, że musi usunąć elementy z kosza. Ze względów bezpieczeństwa byłby to problem szkoleniowy. W przeciwnym razie potrzebujesz obejścia.
@markm miał sugestię narzędzia, która wydaje się to robić; Stoję na stanowisku, że nie jest to „właściwy” sposób, ponieważ jest to dodatek i domyślnie nie jest wbudowany w system Windows (chociaż nie jestem zaskoczony, że przydatne narzędzie administracyjne nie jest uwzględnione). Jedyny inny problem to „ martwię się o to, że może być konieczne uruchomienie go na stacji roboczej i na serwerze lub problemy z synchronizacją profilu z tym, co pojawia się gdzie. Wygląda na to, że ma to być tylko mini-narzędzie do dostępu do zakładki „czyszczenie dysku” w systemie Windows.
Inną myślą ... nie przetestowaną ... byłoby użycie przekierowania folderu do przekierowania folderu kosza na serwer centralny. Sklasyfikowałbym to jednak jako monumentalnie zły pomysł (tm). Następnie usuń ich pliki z tego udostępnionego katalogu. Powiązanie tego przez sieć, konfigurację zabezpieczeń itp. Sprawiłoby, że byłaby to kludge na pierwszym poziomie, która sprawiłaby, że inni administratorzy uciekliby przed spontanicznym spaleniem.
Uruchomiłem TreeSize Free i zobaczyłem, że mam 15 koncertów w Koszu, ale nie widziałem tego, prawdopodobnie dlatego, że zostało to zrobione przez dawno zmarłego użytkownika. Ale w TreeSize Pro mogłem go usunąć, co umieściło dane w Koszu, który mogłem zobaczyć.
To działa dla mnie: -
Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force
Spowoduje to usunięcie recycle.bin; System Windows odtworzy kosz zgodnie z wymaganiami, tj. Jak tylko użytkownik usunie nowy plik.
Może nie być to najbardziej elegancki kod i może istnieć lepszy sposób, ale pomoże to zwolnić miejsce na zatłoczonym serwerze. Możesz to przetestować za pomocą przełącznika -WhatIf w poleceniu Remove-Item.
Get-ChildItem "C:\`$Recycle.bin\" | Remove-Item -Recurse -Force -WhatIf
NB: Każdy dysk utrzymuje własny kosz; więc chcesz zastąpić literę dysku dowolnym dyskiem, dla którego uruchamiasz to polecenie, lub możesz użyć następującego polecenia dla wszystkich dysków lokalnych:
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 }
Mam nadzieję że to pomoże
Miałem kosz, który wyświetlał ponad 4 GB danych, ale nie mogłem go wyczyścić. Poszedłem i znalazłem kilka profili, które nie były już używane na serwerze i usunąłem je we właściwościach systemu - Zaawansowane - Profile użytkowników, a teraz kosz jest pusty.
Oczywiście nie usuwaj żadnych kont, które są nadal aktualne lub używane, ale jako administrator możesz to zrobić w ten sposób.
Podobało mi się to rozwiązanie, ponieważ łatwo jest zrozumieć, co robi i wykonuje zadanie, ale aby pracować z dowolnego miejsca, z którego uruchamiasz polecenie, musisz je zmienić w ten sposób (dodając \ po „drive_letter: ”) i aby móc usunąć ten folder z innych użytkowników .. musisz dodać„ -force ”na końcu polecenia remove-item. Ponadto podczas usuwania wszystkich folderów w folderze C: \ $ Recycle.bin \ nie trzeba dołączać „-recurse” podczas pobierania elementów potomnych. To będzie ostatnie polecenie, którego użyłbym w zamian:
Get-ChildItem "C:` $ Recycle.bin \ "-Force | Remove-Item -Recurse -force -WhatIf
usunięcie -WhatIf, jeśli chcesz zrobić więcej niż tylko testowanie polecenia
Użyj poniższego procesu, aby usunąć wszystkie pliki.
Wszystkie pliki zostaną usunięte z dysku.