清除Windows Server 2008 R2中所有用户的回收站


Answers:


34

据我所知,这不是Microsoft支持的“官方”方式。有两种选择。一种涉及删除c:\ $ Recycle.Bin,另一种涉及编写脚本cleanmgr.exe以在每次用户登录时运行。

关于删除c:\ $ Recycle.bin的“正式”支持最接近的是此MS KB,该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,但从Server 2008 R2开始语法不变。


对此进行了一些研究,其中的链接对此进行了详细说明。social.technet.microsoft.com/Forums/en-US/winserverManagement/…–
Bart Silverstrim

经过测试,这并不能为所有用户清除。真的不需要联系我们的承包商并让他登录只是删除一些文件...
Kyle Brandt

是的,我也可以确认这种行为。似乎cleanmgr每次登录时运行的脚本都是最接近MS官方方式的脚本。替代方法是删除每个配置文件上的回收站文件夹。它应该在每个用户的下一次登录时重新创建它,但是我会有点疲倦地在生产中尝试使用它。
MDMarra 2011年

有关自动执行CleanMgr的更多信息,请点击此处... stackoverflow.com/a/35214197/80161
内森·哈特利

9

我认为没有记录的正确方法,因为用户的回收站在其个人资料中保持独立;这也将构成安全隐患,因为如果用户仔细阅读回收站中的文件或物品,可能会使某些文件泄漏。

可能可以编写脚本,获取管理员特权的脚本,以运行和清除每个本地配置文件的废纸files中的文件(但是,如果您具有漫游配置文件,该脚本仍可能会同步到保存您的配置文件的服务器上)。但是您需要正确设置权限和所有权。我知道在我们的服务器上,管理员对存储服务器上的配置文件没有适当的访问权限;管理员必须拥有该配置文件的所有权,完成后,将所有权返还给适当的用户,否则配置文件将不再适合他们。

您可以尝试在注销时运行一个进程,该进程将清除每个用户的垃圾目录,但同时也需要不小心删除他们想要稍后恢复的内容,因为它在上次注销时已被删除,因此现在将消失。

可能的“正确”方法是在工作站和服务器上配置配额,当达到配额以进行存储时,用户得知他们必须从回收站中删除项目。由于安全原因,这将是一个培训问题。否则,您将需要一种解决方法。

@markm有实用程序建议,似乎可以做到这一点;我坚持说这不是“正确的”方法,因为它是附加组件,并且默认情况下未内置到Windows中(尽管我不惊讶不包含有用的管理实用程序。) d使用它的担心是它可能必须在工作站和服务器上运行,或者您可能遇到配置文件同步问题以及出现在何处的问题。看起来它应该只是用来访问Windows中“磁盘清理”选项卡的迷你工具。

另一个想法...未使用...将使用文件夹重定向将其垃圾文件夹重定向到中央服务器。但是,我将其归类为一个巨大的坏主意(tm)。然后,您将从该共享目录中删除其文件。通过网络,安全设置等将其链接起来,将使其成为一级优先事项,但是这会使其他系统管理员在自发燃烧之前就逃之run。


作为高级用户运行磁盘清理不会​​影响每个人的回收站?
MDMarra 2011年

我有点希望即使整理PITA也不会。在诸如终端服务器之类的共享环境中,可能会带来麻烦。
罗伯·摩尔

嗯,很有趣。看来我需要测试一下。
MDMarra 2011年

当@MarkM的答案听起来最合理时,我删除了它,但是听起来似乎在KyleBrandt测试完之后,它不适用于所有用户。我认为出于安全性考虑,目前尚无记录的方法来正确执行此操作,这很可能是因为删除垃圾用户(漫游)配置文件的一部分而删除其他用户的内容的能力可能会带来安全风险。
巴特·

删除了我的答案。
巴特·

6

我运行了TreeSize Free,发现回收站中有15gig,但是我看不到它,可能是因为它是由一个久违的用户完成的。但是在TreeSize Pro中,我可以将其删除,这会将数据放入我可以看到的回收站中。


7
WinDirStat可以免费这样做。当我需要弄清楚硬盘驱动器上所有空间的使用情况时,这是我的必备工具。您可以右键单击文件或文件夹,然后将其删除或永久删除,也可以右键单击并打开其中的资源管理器窗口或命令提示符。尽管您必须查找SID并将其与每个用户进行匹配,但对于显示所有用户回收站也没有什么限制。
JamesH

3

这对我有用:

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

它将删除recycle.bin; Windows将根据需要重新创建回收站,即用户删除新文件后立即重新创建。

可能不是最优雅的代码,并且可能会有更好的方法,但是它将帮助释放拥挤的服务器上的空间。您可以使用Remove-Item命令上的-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之后添加一个\: ”),然后才能从其他用户删除这些文件夹。.您需要在remove-item命令的末尾添加“ -force”。另外,由于要删除C:\ $ Recycle.bin \中的所有文件夹,因此在获取子项时不需要包括“ -recurse”。因此,这将是我将使用的最终命令:

Get-ChildItem“ C:`$ Recycle.bin \”-强制| Remove-Item-递归-force -WhatIf

删除-WhatIf如果您想做的不仅仅是测试命令


0

使用以下过程删除所有文件。

  1. 以管理员用户身份登录并浏览C盘
  2. 未选中,从文件夹选项中隐藏受保护的操作系统文件
  3. 浏览$ Recycle.Bin文件夹
  4. 删除所有文件和文件夹
  5. 清空回收站

所有文件将从磁盘中删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.