Powershell Copy-Item: O contêiner não pode ser copiado no item de folha existente

6

Eu tenho um script do Powershell com uma linha parecida com esta:

Copy-Item \[machine 1]\[path 1]\[directory 1]\ \[machine 2]\[path 2]\ -recurse

Quando meu script chegar a essa linha, ocorrerá o seguinte erro:

Copy-Item : Container cannot be copied onto existing leaf item.
At C:\[script path]\[script name]:[line] char:5
+     Copy-Item \[machine 1]\[path 1]\[directory 1]\ \[machine 2] ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (\[machine 1]\[path 1]\[directory 1]:String) [Copy-Item], PSArgumentException
    + FullyQualifiedErrorId : CopyContainerItemToLeafError,Microsoft.PowerShell.Commands.CopyItemCommand

Eu encontrei uma solução alternativa, que é para New-Item [diretório 1] sob [caminho 2], criando a raiz que Copy-Item preencherá com o conteúdo, mas isso causa outro problema em que Copy-Item reclama que o caminho já existe, apesar da cópia do arquivo realmente ter sucesso. O Copy-Item é anunciado como uma espécie de solução "apenas funciona". Não vejo razão para a minha solução alternativa ser necessária. Que parte da documentação indicaria o contrário? Por que isso acontece? Qual é a melhor solução para o meu problema?

    
por Void Star 17.08.2015 / 19:17

1 resposta

6

A causa do seu problema é que o destino não existe. Se você olhar para cima no seu log de erros, você verá essa mensagem. Você precisa criar a pasta de destino:

if (-Not (Test-Path \[machine 2]\[path 2]))
{
     md -path \[machine 2]\[path 2]
}

Copy-Item \[machine 1]\[path 1]\[directory 1]\ \[machine 2]\[path 2]\ -recurse
    
por 10.11.2016 / 19:12