我正在尝试使用Powershell脚本将所有文件夹/子文件夹/子文件从服务器上的一个文件夹移动到另一个文件夹,同时始终保持相同的文件结构。为此,我正在使用Get-childItem |复制项目。除目录中的第一个文件夹外,所有文件夹,子文件夹和子文件都可以正常移动。而是将所有这些子文件/子文件夹从此文件夹输出到目标位置。但是,它不会保留其结构,只是不包括其父目录。我的代码如下:
Get-ChildItem $sourceFilePath -Force | Copy-Item -Destination ("*file path*" -f $destinationServer, $destinationClient) -Recurse -Force
我无法弄清楚为什么此代码除了适用于该单个文件夹及其项目以外,还适用于所有其他文件夹,子文件夹和文件。任何帮助将不胜感激,如果还有其他信息可以帮助您,请告诉我。
感谢@ChristianMüller:
New-Item $destinationFilePath -name "MissingFolder" -type directory -Force | Out-Null
Get-ChildItem $sourceFilePath -Force | Copy-Item -Destination ("*filepath*" -f $destinationServer, $destinationClient) -Recurse -Force
答案 0 :(得分:0)
这是一个非常奇怪的错误,也令我惊讶! :)
似乎目标基本目录不存在,而是仅创建目录而不包含内容。
因此,通过这种构造,您甚至可以在ISE中调试此行为:
$sourceFilePath = "c:\temp\Test1"
$destPath = "c:\temp\Test2"
$a=Get-ChildItem $sourceFilePath -Force
rm -Force $destPath
foreach($x in $a) {
$x | Copy-Item -Destination "$destPath" -Recurse -Force
}
dir $destPath
首先使用新项目创建目标目录,以解决问题:
$sourceFilePath = "c:\temp\Test1"
$destPath = "c:\temp\Test2"
$a=Get-ChildItem $sourceFilePath -Force
rm -Force $destPath
New-Item -ItemType Directory -Force -Path $destPath
foreach($x in $a) {
$x | Copy-Item -Destination "$destPath" -Recurse -Force
}
dir $destPath
但在我的示例中,除了
外,完全不使用“ Get-ChildItem”是可行的Copy-Item c:\temp\test1 -Destination c:\temp\test2 -Recurse -Force
这对您也有用吗?
Copy-Item $sourceFilePath -Destination ("*file path*" -f $destinationServer, $destinationClient) -Recurse -Force