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

清除Windows Server 2008 R2中所有用户的回收站的正确方法是什么?

据我所知,这不是微软官方支持的方式。 有两个选项。 一个涉及到删除c:\ $ Recycle.Bin,另一个是脚本cleanmgr.exe在每个用户login时运行。

最接近“官方”支持删除c:\ $ Recycle.bin的是来自这个MS KB ,它引用了XP和Vista,但意味着预期的行为。


立即删除

如果您希望立即发生这种情况,您似乎可以运行rd /sc:\$Recycle.Bin并且Windows在下一次需要时重新创build必要的文件夹。 我刚刚testing了这个,看起来很有效,但显然是谨慎行事。


重复login – 脚本删除

您可以使用磁盘清理工具(cleanmgr.exe)执行此操作。 不幸的是,微软决定把它与“桌面体验”function捆绑在一起,这意味着你将不得不安装一堆其他的垃圾并重新启动。

另一种方法是抓住以下两个文件并将它们移动到每个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制作一个login脚本,通过GPO为所有用户运行,这将在下一次login时清除回收站,如此处所述。 这不是最干净的事情,但它会起作用。 链接的文章是为XP,但语法不变,从Server 2008 R2。

我不认为有一个正确的方法logging为用户的回收站保持分开他们的个人资料; 这也会造成安全隐患,因为回收站中的文档或项目(如果由用户使用的话)可能允许某些文档被泄露。

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

您可以尝试在注销时运行一个进程来清除每个用户的垃圾目录,但是这也意味着会意外删除他们想要稍后恢复的内容,并且现在将从最后一次注销时删除。

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

@markm有一个实用的build议,似乎这样做; 我认为这不是一个“正确”的方式,因为它是一个附加组件,并且默认情况下并不是内置在Windows中的(尽pipe我不惊讶没有包括有用的pipe理工具)。唯一的另一个问题是,不用担心在使用它的时候可能需要在工作站和服务器上运行,或者你的configuration文件可能会与出现在哪里的问题同步。 它看起来应该只是在Windows中访问“磁盘清理”选项卡的一个小工具。

另一个想法…未经testing…将使用文件夹redirect将垃圾文件夹redirect到中央服务器。 不过,我会把这个分类为一个坏主意(tm)。 然后你会从共享目录中删除他们的文件。 然而,通过networking连接,安全设置等将会使其成为其他系统pipe理员在自发燃烧之前跑掉的一级优先级的kludge。

我运行TreeSize Free,看到我在回收站中有15个gigig,但是我看不到它,可能是因为它是由一个长期离开的用户完成的。 但是在TreeSize Pro中,我可以删除它,将数据放入我可以看到的回收站。

这适用于我: –

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

它会删除recycle.bin; Windows将根据需要重新创build回收站,即一旦用户删除新文件。

可能不是最优雅的代码,也许有更好的方法来做到这一点,但它将有助于释放拥塞的服务器上的空间。 您可以使用Remove-Item命令上的-WhatIf开关对其进行testing。

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

注意:每个驱动器都有自己的回收站。 所以你想用你正在运行这个命令的驱动器replace驱动器盘符,或者你可以对所有本地驱动器使用以下命令:

 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 } 

希望这可以帮助

我有一个回收站,显示超过4GB的数据,但我无法清除它。 走进去,发现一堆configuration文件不再在服务器上使用,并在系统属性 – 高级 – 用户configuration文件中删除,现在回收站是空的。

显然,不要删除任何仍在使用或正在使用的帐户,但作为pipe理员,您可以这样做。

我喜欢这个解决scheme,因为它很容易理解它在做什么,它做了这个工作,但是为了从任何位置运行命令,你需要像这样运行(在“drive_letter: “),并且能够从其他用户删除这些文件夹。您需要在remove-item命令的末尾添加”-force“。 此外,当您删除C:\ $ Recycle.bin \中的所有文件夹时,在获取子项时不需要包含“-recurse”。 所以这将是我将使用的最终命令:

Get-ChildItem“C:`$ Recycle.bin \”-Force | Remove-Item -Recurse -force -WhatIf

删除 – 如果你想要做的不仅仅是testing命令