ล้างถังรีไซเคิลสำหรับผู้ใช้ทั้งหมดใน Windows Server 2008 R2


คำตอบ:


34

เท่าที่ฉันสามารถบอกได้เหล่านี้ไม่มี Microsoft "ทางการ" สนับสนุนวิธีการทำเช่นนี้ มีสองตัวเลือก หนึ่งเกี่ยวข้องกับการลบ c: \ $ Recycle.Bin และอื่น ๆ คือการเขียนสคริปต์ cleanmgr.exe เพื่อให้ทำงานในการเข้าสู่ระบบของผู้ใช้แต่ละคน

สิ่งที่ใกล้เคียงที่สุดกับการสนับสนุน "เป็นทางการ" สำหรับการลบ c: \ $ Recycle.bin มาจากMS KBนี้ซึ่งอ้างอิง XP และ Vista แต่หมายถึงพฤติกรรมที่คาดหวัง


การลบทันที

หากคุณต้องการให้สิ่งนี้เกิดขึ้นทันทีดูเหมือนว่าคุณสามารถเรียกใช้rd /s c:\$Recycle.Binและ Windows ควรสร้างโฟลเดอร์ที่จำเป็นอีกครั้งในครั้งถัดไปที่จำเป็น ฉันเพิ่งทดสอบสิ่งนี้อย่างรวดเร็วและดูเหมือนจะใช้งานได้ แต่ - อย่างชัดเจน - ดำเนินการด้วยความระมัดระวัง


การลบการเข้าสู่ระบบสคริปต์ที่เกิดขึ้นประจำ

คุณสามารถทำได้ด้วยเครื่องมือ Disk Cleanup (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 \ th-US

เล่น cleanmgr เพียงอย่างเดียวจะไม่ยอมให้คุณถังรีไซเคิลที่ชัดเจนของทุกคน แต่คุณสามารถใช้ / sageset และ / sagerun เพื่อให้สคริปต์เข้าสู่ระบบที่ทำงานสำหรับผู้ใช้ทั้งหมดผ่าน GPO ที่จะล้างถังรีไซเคิลของพวกเขาในการเข้าสู่ระบบต่อไปตามที่อธิบายไว้ที่นี่ มันไม่ใช่สิ่งที่สะอาดที่สุด แต่จะใช้ได้ บทความที่เชื่อมโยงมีไว้สำหรับ XP แต่ไวยากรณ์ไม่เปลี่ยนแปลง ณ Server 2008 R2


ทำวิจัยเล็กน้อยเกี่ยวกับเรื่องนี้มีลิงค์นี้ที่อธิบายรายละเอียดเล็กน้อย social.technet.microsoft.com/Forums/en-US/winserverManagement/…
Bart Silverstrim

ผ่านการทดสอบแล้วสิ่งนี้จะไม่ชัดเจนสำหรับผู้ใช้ทุกคน ไม่ต้องการติดต่อผู้รับเหมาของเราจริง ๆ และให้เขาเข้าสู่ระบบเพื่อลบไฟล์บางไฟล์ ...
Kyle Brandt

ใช่ฉันสามารถยืนยันพฤติกรรมนี้ได้เช่นกัน ดูเหมือนว่าการเขียนสคริปต์cleanmgrเพื่อทำงานในแต่ละการเข้าสู่ระบบเป็นสิ่งที่ใกล้เคียงกับวิธีการอย่างเป็นทางการของ MS อีกทางเลือกหนึ่งคือการทำให้โฟลเดอร์ถังรีไซเคิลหายไปในแต่ละโปรไฟล์ มันควรจะสร้างมันในการเข้าสู่ระบบต่อไปสำหรับผู้ใช้แต่ละคน แต่ฉันจะเบื่อเล็ก ๆ น้อย ๆ ที่จะลองนี้ในการผลิต
MDMarra

เพิ่มเติมเกี่ยวกับการทำให้ CleanMgr ทำงานอัตโนมัติที่นี่ ... stackoverflow.com/a/35214197/80161
Nathan Hartley

9

ฉันไม่คิดว่าจะมีวิธีการบันทึกที่เหมาะสมเนื่องจากถังขยะรีไซเคิลสำหรับผู้ใช้ถูกแยกเก็บไว้ในโปรไฟล์ของพวกเขา สิ่งนี้จะเป็นอันตรายต่อความปลอดภัยเนื่องจากเอกสารหรือรายการในถังรีไซเคิลหากผู้ใช้อ่านอาจอนุญาตให้มีการรั่วไหลของเอกสารบางอย่าง

อาจเป็นไปได้ที่สคริปต์สคริปต์ที่มีสิทธิ์ของผู้ดูแลระบบสามารถเรียกใช้และล้างไฟล์จากถังขยะของแต่ละโปรไฟล์โลคัล (แต่อาจยังซิงค์กับเซิร์ฟเวอร์ที่เก็บโปรไฟล์ของคุณหากคุณมีโปรไฟล์ข้ามเครือข่าย) แต่คุณต้องมีการอนุญาตและการเป็นเจ้าของอย่างถูกต้อง ฉันรู้ว่าในเซิร์ฟเวอร์ของเราผู้ดูแลระบบไม่สามารถเข้าถึงโปรไฟล์บนเซิร์ฟเวอร์จัดเก็บข้อมูลได้อย่างเหมาะสม ผู้ดูแลระบบจะต้องเป็นเจ้าของโปรไฟล์และเมื่อเราเสร็จสิ้นการคืนความเป็นเจ้าของให้กับผู้ใช้ที่เหมาะสมหรือโปรไฟล์อื่นไม่ทำงานอย่างถูกต้องสำหรับพวกเขาอีกต่อไป

คุณสามารถลองใช้กระบวนการเมื่อออกจากระบบซึ่งจะล้างไดเรกทอรีถังขยะต่อผู้ใช้ แต่ก็มีการลบบางสิ่งที่พวกเขาต้องการกู้คืนโดยไม่ตั้งใจและตอนนี้จะหายไปตั้งแต่ถูกลบออกเมื่อออกจากระบบครั้งล่าสุด

อาจเป็นวิธี "เหมาะสม" ที่จะทำคือการกำหนดค่าโควต้าบนเวิร์กสเตชันและเซิร์ฟเวอร์และเมื่อโควต้าที่ถูกตีสำหรับการจัดเก็บผู้ใช้เรียนรู้ว่าพวกเขาต้องลบรายการจากถังรีไซเคิล เนื่องจากความปลอดภัยมันจะเป็นปัญหาการฝึกอบรม มิฉะนั้นคุณจะต้องแก้ไขปัญหา

@markm มีข้อเสนอแนะยูทิลิตี้ที่ดูเหมือนว่าจะทำเช่นนี้; ฉันยืนยันว่ามันไม่ใช่วิธีที่ "ถูกต้อง" เนื่องจากเป็นส่วนเสริมและไม่ได้สร้างไว้ใน Windows โดยค่าเริ่มต้น (แม้ว่าฉันจะไม่แปลกใจเลยว่ายูทิลิตี้การดูแลระบบที่เป็นประโยชน์จะไม่รวมอยู่) ปัญหาอื่น ๆ ไม่ต้องกังวลในการใช้งานเพราะอาจต้องใช้งานบนเวิร์กสเตชันและบนเซิร์ฟเวอร์หรือคุณอาจมีปัญหาในการซิงค์โปรไฟล์กับสิ่งที่ปรากฏขึ้น ดูเหมือนว่ามันควรจะเป็นเพียงเครื่องมือขนาดเล็กสำหรับเข้าถึงแท็บ "การล้างข้อมูลบนดิสก์" ใน Windows

ความคิดอื่น ๆ ... ยังไม่ทดลอง ... จะใช้การเปลี่ยนเส้นทางโฟลเดอร์เพื่อเปลี่ยนเส้นทางโฟลเดอร์ถังขยะไปยังเซิร์ฟเวอร์กลาง อย่างไรก็ตามฉันจะจัดว่าเป็นความคิดที่ไม่ดีอย่างยิ่งยวด (tm) จากนั้นคุณจะลบไฟล์ออกจากไดเรกทอรีที่แชร์ การเชื่อมโยงสิ่งนี้กับเครือข่ายการตั้งค่าความปลอดภัย ฯลฯ จะทำให้สิ่งนี้เป็นสิ่งสำคัญอันดับหนึ่งที่จะทำให้ sysadmins อื่นวิ่งหนีไปก่อนที่จะทำการเผาไหม้ตามธรรมชาติ


การล้างข้อมูลบนดิสก์ทำงานในฐานะผู้ใช้ที่ยกระดับไม่ได้มีการรีไซเคิลถังขยะของทุกคน
MDMarra

ฉันหวังว่าจะไม่ได้จัดระเบียบ PITA ในสภาพแวดล้อมที่ใช้ร่วมกันเช่นเทอร์มินัลเซิร์ฟเวอร์ที่มีศักยภาพสำหรับความไม่เหมาะสม
Rob Moir

หืม ดูเหมือนว่าฉันต้องการทดสอบสิ่งนี้
MDMarra

ฉันลบมันเมื่อคำตอบของ @ MarkM ฟังดูสมเหตุสมผลที่สุดตามบัญญัติ แต่ดูเหมือนว่ามันจะไม่ทำงานสำหรับผู้ใช้ทุกคนหลังจาก KyleBrandt ทำการทดสอบ ฉันคิดว่ามันไม่มีวิธีการทำเอกสารที่ถูกต้องเนื่องจากความปลอดภัยน่าจะเป็น ... ความสามารถในการลบข้อมูลของผู้ใช้รายอื่นเนื่องจากถังขยะเป็นส่วนหนึ่งของโปรไฟล์ (โรมมิ่ง) อาจเสี่ยงต่อความปลอดภัย
Bart Silverstrim

ลบคำตอบของฉันนั่นคือ
Bart Silverstrim

6

ฉันวิ่ง TreeSize ฟรีและเห็นว่าฉันมี 15 กรัมในถังรีไซเคิล แต่ฉันไม่เห็นอาจเป็นเพราะผู้ใช้ที่เสียชีวิตไปนานแล้ว แต่ใน TreeSize Pro ฉันสามารถลบได้ซึ่งใส่ข้อมูลลงในถังรีไซเคิลที่ฉันเห็น


7
WinDirStat สามารถทำเช่นนั้นได้ฟรี เป็นเครื่องมือของฉันเมื่อฉันต้องคิดออกสิ่งที่ใช้พื้นที่ทั้งหมดในฮาร์ดไดรฟ์ คุณสามารถคลิกขวาที่ไฟล์หรือโฟลเดอร์และลบมันไปยังถังขยะรีไซเคิลหรือถาวรคุณยังสามารถคลิกขวาและเปิดหน้าต่าง Explorer ที่นั่นหรือพร้อมรับคำสั่ง นอกจากนี้ยังไม่มีคุณสมบัติที่เหมาะสมเกี่ยวกับการแสดง Recycle Bins ของผู้ใช้ถึงคุณแม้ว่าคุณจะต้องค้นหา SIDs และจับคู่กับผู้ใช้แต่ละคนด้วยตัวคุณเอง
JamesH

3

สิ่งนี้ใช้ได้กับฉัน: -

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

มันจะลบ recycle.bin; Windows จะสร้างถังรีไซเคิลขึ้นมาใหม่ตามต้องการเช่นทันทีที่ผู้ใช้ลบไฟล์ใหม่

อาจไม่ใช่โค้ดที่หรูหราที่สุดและอาจมีวิธีที่ดีกว่าในการทำ แต่มันจะช่วยเพิ่มพื้นที่ว่างบนเซิร์ฟเวอร์ที่แออัด คุณสามารถทดสอบโดยใช้สวิตช์ -WhatIf บนคำสั่งลบรายการ

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

ฉันมีถังรีไซเคิลที่แสดงข้อมูลมากกว่า 4GB แต่ฉันไม่สามารถล้างได้ ไปและพบโปรไฟล์จำนวนมากที่ไม่ได้ใช้บนเซิร์ฟเวอร์และลบออกภายใต้คุณสมบัติของระบบ - ขั้นสูง - โปรไฟล์ผู้ใช้และตอนนี้ถังรีไซเคิลว่างเปล่า

แน่นอนว่าจะไม่ลบบัญชีใด ๆ ที่ยังคงเป็นปัจจุบันหรือใช้งานอยู่ แต่ในฐานะผู้ดูแลระบบคุณสามารถทำได้ด้วยวิธีนี้


0

ฉันชอบโซลูชันนี้เพราะเข้าใจได้ง่ายว่าทำอะไรอยู่และทำงานได้ แต่เพื่อที่จะทำงานจากตำแหน่งใด ๆ ที่คุณเรียกใช้คำสั่งคุณจำเป็นต้องเรียกใช้การเปลี่ยนแปลงเช่นนี้ (เพิ่ม \ หลัง "drive_letter: ") และเพื่อให้สามารถลบโฟลเดอร์เหล่านั้นออกจากผู้ใช้รายอื่น .. คุณต้องเพิ่ม" -force "ที่ส่วนท้ายของคำสั่ง remove-item นอกจากนี้เมื่อคุณลบโฟลเดอร์ทั้งหมดใน C: \ $ Recycle.bin \ คุณไม่จำเป็นต้องใส่ "-recurse" เมื่อรับไอเท็มลูก ดังนั้นนี่จะเป็นคำสั่งสุดท้ายที่ฉันจะใช้แทน:

รับ ChildItem "C:` $ Recycle.bin \ "-Force | ลบรายการ - เรียกเก็บเงิน - กำลัง - อะไรถ้า

เอาออก - ถ้าหากคุณต้องการทำมากกว่าการทดสอบคำสั่ง


0

ใช้กระบวนการด้านล่างเพื่อลบไฟล์ทั้งหมด

  1. เข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบ & สำรวจไดรฟ์ c
  2. ไม่ได้ทำเครื่องหมายซ่อนไฟล์ระบบปฏิบัติการที่ป้องกันจากตัวเลือกโฟลเดอร์
  3. เรียกดูโฟลเดอร์$ Recycle.Bin
  4. ลบไฟล์และโฟลเดอร์ทั้งหมด
  5. ล้างถังขยะของคุณ

ไฟล์ทั้งหมดจะถูกลบออกจากดิสก์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.