Não é possível remover o item, o diretório não está vazio
Quando usar oRemove-Item
, mesmo utilizando o comando-r
e-Force
parâmetros, às vezes a seguinte mensagem de erro é retornada:
Remove-Item: Não é possível remover o item C: \ Pasta de Teste \ Pasta de Teste \ Destino: O diretório não está vazi
articularmente, isso acontece quando o diretório a ser removido é aberto no Windows Explore
Agora, embora seja possível evitar isso simplesmente com o Windows Explorer fechado ou não navegando nesse local, eu trabalho meus scripts em um ambiente multiusuário, onde as pessoas às vezes esquecem de fechar as janelas do Windows Explorer, estou interessado em uma solução para excluir pastas e diretórios inteiros, mesmo se eles estiverem abertos no Windows Explore
Existe uma opção mais poderosa que-Force
que eu posso definir para conseguir isso?
Para reproduzir isso de forma confiável, crie a pastaC:\Test Folder\Origin
e preencha-o com alguns arquivos e subpastas (importante), pegue o script a seguir ou um similar e execute-o uma vez. Agora abra uma das subpastas deC:\Test Folder\Target
(no meu caso, eu useiC:\Test Folder\Target\Another Subfolder
contendoA third file.txt
) e tente executar o script novamente. Agora você receberá o erro. Se você executar o script pela terceira vez, não receberá o erro novamente (dependendo das circunstâncias que ainda tenho que determinar, no entanto, o erro algumas vezes ocorre na segunda vez e nunca mais, e outras vezescad segundo tempo)
$SourcePath = "C:\Test Folder\Origin"
$TargetPath = "C:\Test Folder\Target"
if (Test-Path $TargetPath) {
Remove-Item -r $TargetPath -Force
}
New-Item -ItemType directory -Path $TargetPath
Copy-Item $SourcePath -Destination $TargetPath -Force -Recurse -Container