Попробуйте это.
copy-item -path "\\ server1 \ z $ \ backups \" -Destination "\\ server2 \ z $ \" -Filter {$ _. PSIsContainer -eq $ True} -recurse
robocopy /e /XF *.*
Извините, я не ответил на ваш вопрос. Возможно, попробуйте что-нибудь вроде этого:
ForEach($folder in Get-ChildItem -Recurse \\server1\z$\backups\ | ? { $_.PSIsContainer }) { Copy-Item -Path $folder -Destination \\server2\z$\$folder }
Этот сценарий PS, вероятно, нуждается в некоторой настройке - я действительно не тестировал его. Но концепция есть.
Вот что я придумал. Вы можете использовать команду "mkdir" для проверки перед ее запуском.
$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
}