54 votes

Comment déplacer un fichier vers la corbeille à l'aide de PowerShell ?

Par défaut, lorsque vous supprimez un fichier à l'aide de PowerShell, il est définitivement supprimé.

J'aimerais que l'élément supprimé soit placé dans la corbeille, comme cela aurait été le cas avec un shell delete.

Comment faire cela en PowerShell sur un objet fichier ?

34voto

John Pankowicz Points 101

Si vous ne voulez pas toujours voir l'invite de confirmation, utilisez ce qui suit :

Add-Type -AssemblyName Microsoft.VisualBasic
[Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile('d:\foo.txt','OnlyErrorDialogs','SendToRecycleBin')

(solution gracieusement offerte par Shay Levy)

34voto

mikemaccana Points 7470

Réponse 2017 : utiliser le Module de recyclage

Install-Module -Name Recycle

Alors cours :

Remove-ItemSafely file

J'aime créer un alias appelé trash pour ça.

21voto

Bruno Points 2739

Elle fonctionne en PowerShell à peu près de la même manière que la solution de Chris Ballance en JScript :

 $shell = new-object -comobject "Shell.Application"
 $folder = $shell.Namespace("<path to file>")
 $item = $folder.ParseName("<name of file>")
 $item.InvokeVerb("delete")

18voto

Omar Shahine Points 886

Voici une version plus courte qui réduit un peu le travail.

$path = "<path to file>"
$shell = new-object -comobject "Shell.Application"
$item = $shell.Namespace(0).ParseName("$path")
$item.InvokeVerb("delete")

11voto

user103035 Points 31

Voici une fonction améliorée qui prend en charge les répertoires ainsi que les fichiers en entrée :

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')
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X