estructura inesperada al copiar carpetas en Windows Powershell

Tengo un conjunto de proyectos que implican una combinación de archivos específicos del proyecto más archivos comunes. Estoy tratando de copiar contenido de dos carpetas diferentes, una carpeta específica del proyecto y una carpeta común, en una sola carpeta con el nombre del proyecto. También quiero retener las jerarquías de carpetas de las carpetas originales.

Por ejemplo, algunas rutas a los archivos comunes:

src\Common\PackageAssets\logo1.jpg
src\Common\PackageAssets\logo2.jpg

Y ejemplos de rutas a archivos específicos del proyecto:

src\Projects\ProjectA\PackageFiles\readme.txt
src\Projects\ProjectA\PackageFiles\scale-100\projA.png

El resultado deseado después de copiar sería:

bld\ProjectA\pkgFiles\logo1.png
bld\ProjectA\pkgFiles\logo2.png
bld\ProjectA\pkgFiles\readme.txt
bld\ProjectA\pkgFiles\scale-100\projA.png

Lo que estoy usando es esto:

[string]$pkgContentPath = "bld\$project\pkg_contents"

# copy common files
Copy-Item -Path .\src\Common\PackageAssets -Recurse -Destination $pkgContentPath
# copy project-specific files
Copy-Item -Path .\src\Projects\ProjectA\PackageFiles\ -Recurse -Destination $pkgContentPath

Pero en lugar de los resultados esperados, todos los archivos terminan en un nivel adicional de subcarpeta:

bld\ProjectA\pkgFiles\PackageAssets\logo1.png
bld\ProjectA\pkgFiles\PackageAssets\logo2.png
bld\ProjectA\pkgFiles\PackageFiles\readme.txt
bld\ProjectA\pkgFiles\PackageFiles\scale-100\projA.png

Estoy perplejo. No puedo entender cómo deshacerme de la capa adicional de subcarpetas. Intenté usar la tubería Get-ChildItem para Copy-Item, pero luego se perdieron las jerarquías de subcarpetas.

En un archivo .bat, esto funciona:

xcopy src\Common\PackageAssets\* bld\%project\pkg_contents /s
xcopy src\Projects\%project\PackageFiles bld\%project\pkg_contents /s

Supongo que podría usar xcopy, pero seguramente debe haber una manera de hacerlo usando cmdlets.

Respuestas a la pregunta(1)

Su respuesta a la pregunta