默认情况下,当您使用PowerShell删除文件时,它将被永久删除.
我想将删除的项目实际上转到回收站,就像我通过shell删除一样.
如何在PowerShell中对文件对象执行此操作?
如果您不想总是看到确认提示,请使用以下命令:
Add-Type -AssemblyName Microsoft.VisualBasic [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile('d:\foo.txt','OnlyErrorDialogs','SendToRecycleBin')
(解决方案由Shay Levy提供)
它在PowerShell中的工作方式与Chris Ballance在JScript中的解决方案非常相似:
$shell = new-object -comobject "Shell.Application" $folder = $shell.Namespace("") $item = $folder.ParseName(" ") $item.InvokeVerb("delete")
这是一个缩短版本,减少了一些工作
$path = "" $shell = new-object -comobject "Shell.Application" $item = $shell.Namespace(0).ParseName("$path") $item.InvokeVerb("delete")
2017答案:使用回收模块
Install-Module -Name Recycle
然后运行:
Remove-ItemSafely file
我喜欢trash
为这个做一个别名.
这是一个改进的函数,它支持目录和文件作为输入:
Add-Type -AssemblyName Microsoft.VisualBasic function Remove-Item-ToRecycleBin($Path) { $item = Get-Item -Path $Path -ErrorAction SilentlyContinue if ($item -eq $null) { Write-Error("'{0}' not found" -f $Path) } else { $fullpath=$item.FullName Write-Verbose ("Moving '{0}' to the Recycle Bin" -f $fullpath) if (Test-Path -Path $fullpath -PathType Container) { [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteDirectory($fullpath,'OnlyErrorDialogs','SendToRecycleBin') } else { [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($fullpath,'OnlyErrorDialogs','SendToRecycleBin') } } }