Как вы перемещаете файлы/папки на томах с помощью Powershell?
Я пытаюсь переместить папку с помощью PowerShell
move-item c:\test c:\test2
работает, но
move-item c:\test \\192.168.1.50\c$\test2
не говорит и говорит мне
Перемещение-элемент: источник и назначение путь должен иметь одинаковые корни. Переехать не будет работать через тома.
Ответы
Ответ 1
Если test
- это каталог, он не будет работать, поскольку в документации для Move-Item
указано:
Move-Item
будет перемещать файлы между дисками, поддерживаемыми одним и тем же провайдером, но перемещает каталоги только на одном диске.
Вы можете использовать Copy-Item
, а затем Remove-Item
в этом случае:
try {
Copy-Item -Recurse C:\test \\192.168.1.50\c$\test2 -ErrorAction Stop
Remove-Item -Recurse c:\test
} catch {}
Другим вариантом, если вы не полагаетесь на PSDrives, было бы просто использовать xcopy или robocopy.
Ответ 2
Это нужно затянуть и, вероятно, следует включить в функцию, но она работает.
$source = "<UNC Path>"
$destination = "<UNC Path>"
if (test-path $destination -PathType Container)
{
foreach ( $srcObj in (get-childitem $source ))
{
$srcObjPath = "$($srcObj.fullname)"
$destObjPath = "$($destination)\$($srcObj.name)"
If((Test-Path -LiteralPath $destination))
{
copy-item $srcObjPath $destination -recurse
if ( (Test-Path -Path $destObjPath ) -eq $true)
{
if ( (compare-object (gci $srcObjPath -recurse) (gci $destObjPath -recurse)) -eq $null)
{
write-output "Compare is good. Remove $($srcObjPath)"
remove-item $srcObjPath -recurse
}
else
{
write-output "Compare is bad. Remove $($destObjPath)"
remove-item $destObjPath -recurse
}
}
else
{
write-output "$($destination) path is bad"
}
}
else
{
write-output "bad destinaton: $($destination)"
}
}
}
Ответ 3
У меня была аналогичная проблема. Я узнал, что в папке назначения права пользователя ограничены. Я изменил полные разрешения на исходный и целевой диск, и переход прошел гладко. Нет сообщения об ошибках одинаковых корней в команде move-item.