Solución:
Solución 1:
Get-ChildItem
le permite listar archivos y directorios, incluso de forma recursiva con filtros de nombre de archivo. Copy-Item
le permite copiar un archivo.
Hay mucha superposición en términos de selección de archivos, a menudo Copy-Item
por sí solo es suficiente dependiendo de los detalles de lo que necesita (por ejemplo, ¿desea conservar la estructura de la carpeta?)
Para copiar todo *.foo
y *.bar
de StartFolder a DestFolder:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
Si necesita conservar la estructura de la carpeta, las cosas se complican porque necesita crear el nombre de la carpeta de destino, algo como:
$sourcePath="C:StartFolder"
$destPath="C:DestFolder"
Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
{
$destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir))
{
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
Pero robocopy
es probable que sea más fácil:
robocopy StartFolder DestFolder *.foo *.bar /s
Al final, la forma de elegir dependerá de los detalles de lo que se necesita.
(En lo anterior he evitado los alias (p. Ej. Copy-Item
en vez de copy
) y usan explícitamente nombres de parámetros incluso si son posicionales).
Solucion 2:
No puedo abordar la parte de IIS, pero la copia del archivo mientras se conserva la estructura del directorio puede ser mucho más simple de lo que se muestra en las otras respuestas:
Copy-Item -path "StartFolder" -Recurse -Include "*.foo","*.bar" -Destination "DestFolder" -Container
los -Container
El argumento es la parte mágica que replicará la estructura en el destino tal como está en la fuente.