Olá pessoal,
Recentemente descobri que o “delete” de um prompt de comando nao não os coloca os arquivos na lixeira na lixeira, nem o Remove-Item PowerShell. Isso foi uma escolha de design da Microsoft no windows, só pela interface grafica o arquivo é movido para a lixeira, nao via linha de comando, por isso resolvi investigar como mover arquivos para a lixeira a partir do prompt de comando, entao acabei fazendo uma função simples para remoçao de apenas arquivos, movendo-os para a lixeira.
Para isso precisamos carregar o Assembly Microsoft.VisualBasic
isso é feito com o seguinte comando:
Add-Type -AssemblyName Microsoft.VisualBasic
Em seguida para remover o arquivo basta executar o seguinte comando(para diretorios o metodo é DeleteDirectory):
[Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($File,'OnlyErrorDialogs','SendToRecycleBin')
Segue entao a funçao completa para mover arquivos para a lixeira do Windows.
Função completa:
function Move-FiletoRecycleBin {
[CmdletBinding()]
param (
[ValidateNotNullOrEmpty()]
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[ValidateScript({ Test-Path -Path $PSItem })]
[string]$FilePath
)
begin {
Add-Type -AssemblyName Microsoft.VisualBasic
$File = (Resolve-Path -Path $FilePath).Path
}
process {
Write-Verbose -Message "Moving $File to the RecycleBin"
[Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile($File,'OnlyErrorDialogs','SendToRecycleBin')
}
end {
}
}
Dúvidas? Sugestões? Comente!
Até a próxima!