Copy-Item não funciona como esperado

2

Eu não consigo descobrir o que estou fazendo de errado com este comando e gostaria que outro par de olhos apontasse isso.

Eu quero copiar a estrutura de diretórios, mas não os arquivos que a estrutura contém.

Copy-Item -recurse -exclude *.* -path \server1\z$\backups\  -destination \server2\z$\ -Verbose

O comando é executado, mas copia arquivos apesar de dizer para não copiar arquivos. Como faço para copiar a árvore de diretórios e não os arquivos?

    
por Jake 09.05.2012 / 17:25

3 respostas

1

Tente isso.

copy-item -path "\server1\z$\backups\" -Destination "\server2\z$\" -Filter {$_.PSIsContainer -eq $True} -recurse

    
por 09.05.2012 / 17:31
0
robocopy /e /XF *.*

Desculpe, isso não respondeu à sua pergunta. Talvez tente algo assim:

ForEach($folder in Get-ChildItem -Recurse \server1\z$\backups\ | ? { $_.PSIsContainer }) { Copy-Item -Path $folder -Destination \server2\z$\$folder }

Isso acima do script PS provavelmente precisa de alguns ajustes - eu realmente não testei. Mas o conceito está aí.

    
por 09.05.2012 / 17:47
0

Isso é o que eu criei. Você pode retirar o comando "mkdir" para testar antes de executá-lo.

$src =  "c:\temp"
$dest = "c:\test"

$dirs = dir -Recurse $src | Where {$_.psIsContainer -eq $true}
foreach( $name in $dirs ) {
    $tmp = $name.fullname.Replace($name.Root,$dest + "\")
    $tmp
    mkdir $tmp
}
    
por 09.05.2012 / 17:56