我尝试使用PowerShell移动文件夹
move-item c:\test c:\test2
有效,但
move-item c:\test \\192.168.1.50\c$\test2
不会告诉我
Move-Item:来源和目的地 路径必须具有相同的根。移动 不会跨卷工作。
答案 0 :(得分:24)
如果test
是一个目录,它将无效,因为documentation for 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。
答案 1 :(得分:4)
这需要加强,并且可能应该被制作成一个功能,但它可以工作。
$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)"
}
}
}
答案 2 :(得分:1)
我有类似的问题。我发现在目标文件夹上,用户权限有限。我更改了源和目标驱动器的完全权限,并且移动顺利进行。在move-item命令中没有相同的根错误消息。