Назад | Перейти на главную страницу

Copy-Item не работает должным образом

Я не могу понять, что я делаю не так с этой командой, и хотел бы, чтобы другая пара глаз указала на это.

Я хочу скопировать структуру каталогов, но не файлы, которые она содержит.

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

Команда запускается, но копирует файлы, несмотря на указание не копировать файлы. Как скопировать дерево каталогов, а не файлы?

Попробуй это.

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
}