Powershell 如何实现将文件删除到回收站而不是永久删除?

Powershell 如何实现将文件删除到回收站而不是永久删除?,powershell,powershell-3.0,Powershell,Powershell 3.0,我有一个服务器,它继续缩小我们的D:存储的差距。因此,我时不时地进入该位置,手动删除文件以释放一些空间“恶心”。我创建了一个简单的Powershell脚本,它允许我配置需要删除的特定文件和日期(这很重要)。不幸的是,在我的测试过程中,我很快意识到这些文件被永久删除了,我宁愿把它们送到垃圾箱 代码如下: Get-ChildItem -Recurse C:\Temp\TWLogTest\*.* | Where-Object {$_.CreationTime -gt (get-date "12-

我有一个服务器,它继续缩小我们的D:存储的差距。因此,我时不时地进入该位置,手动删除文件以释放一些空间“恶心”。我创建了一个简单的Powershell脚本,它允许我配置需要删除的特定文件和日期(这很重要)。不幸的是,在我的测试过程中,我很快意识到这些文件被永久删除了,我宁愿把它们送到垃圾箱

代码如下:

   Get-ChildItem -Recurse C:\Temp\TWLogTest\*.* | Where-Object {$_.CreationTime -gt (get-date "12-03- 2016 01:00AM") -and $_.
   CreationTime -lt (get-date "10-10-2019 14:00PM")} | Where-Object {$_.name -match "tomcat"} | Remove-Items

如果您能在本特定脚本中实现删除,请提供任何帮助、指导或想法,我们将不胜感激。我已经看过模块回收,但仍然不确定如何在这里添加它

谢谢, 马特

基于此:

类似这样的内容应该与您的代码匹配。该方法仅适用于文件。在比较日期时,第二个参数无论如何都将转换为[datetime]

using assembly microsoft.visualbasic
using namespace microsoft.visualbasic

Dir -File -R C:\Temp\TWLogTest | Where { 
  $_.CreationTime -gt '12/3/16 1AM' -and 
  $_.CreationTime -lt '10/10/19 2PM' -and 
  $_.name -match 'tomcat' } | 
foreach { [FileIO.FileSystem]::DeleteFile($_.fullname, 'OnlyErrorDialogs',
  'SendToRecycleBin') }

但是,如果目标是释放磁盘空间,那么回收将无济于事。这是真的,多亏了你的投入,我认为它将释放特定驱动器上的空间,并在删除错误文件时提供灵活性。这些是应用程序日志,它们可能包含数据。对,我见过这个解决方案,它可能适用于短文件名,问题是数据日志附加了长名称和日期。。。我不能使用'foo.txt'(我以它为例),因为文件名需要更多的特殊性。这就是我为什么使用“-match'tomcat'”的原因,因为tomcat是我需要删除的某些文件中的一个单词。它的作用就像一个符咒。很棒的东西,谢谢你的帮助!
using assembly microsoft.visualbasic
using namespace microsoft.visualbasic

Dir -File -R C:\Temp\TWLogTest | Where { 
  $_.CreationTime -gt '12/3/16 1AM' -and 
  $_.CreationTime -lt '10/10/19 2PM' -and 
  $_.name -match 'tomcat' } | 
foreach { [FileIO.FileSystem]::DeleteFile($_.fullname, 'OnlyErrorDialogs',
  'SendToRecycleBin') }