好的,我正在用PowerShell编写一个脚本,用于删除回收站中的旧文件。我想让它删除所有在2天前被删除的回收站中的文件。我已经做了很多研究,但并没有找到合适的答案。
这是我目前所拥有的(从网上找到的脚本,我并不太了解PowerShell):
$Path = 'C' + ':\$Recycle.Bin'
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
#Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-3) } |
Remove-Item -Recurse -exclude *.ini -ErrorAction SilentlyContinue
除了一个例外,它检查文件参数“LastWriteTime”,如果用户在修改文件后的同一天删除该文件,那么这很棒。否则会失败。
我该如何修改此代码以便检查文件被删除的时间,而不是写入的时间。
-另外,如果我在Microsoft Server 2008上的管理员帐户中运行此脚本,它会为所有用户的回收站工作还是只有我的回收站?
答案:
对我有效的代码是:
$Shell = New-Object -ComObject Shell.Application
$Global:Recycler = $Shell.NameSpace(0xa)
foreach($item in $Recycler.Items())
{
$DeletedDate = $Recycler.GetDetailsOf($item,2) -replace "\u200f|\u200e",""
$dtDeletedDate = get-date $DeletedDate
If($dtDeletedDate -lt (Get-Date).AddDays(-3))
{
Remove-Item -Path $item.Path -Confirm:$false -Force -Recurse
}#EndIF
}#EndForeach item
这对我非常有效,但仍有两个问题……我如何在多个驱动器上进行此操作?这将应用于所有用户还是只适用于我自己?