Tente isso.
copy-item -path "\server1\z$\backups\" -Destination "\server2\z$\" -Filter {$_.PSIsContainer -eq $True} -recurse
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?
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í.
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
}