Me gustaría escribir un script de PowerShell que obtenga los siguientes parámetros como entrada:
carpeta para copiar, extensiones permitidas, carpeta para copiar y un booleano que indica si el cambio debe reiniciar IIS, nombre de usuario y contraseña.
¿Qué cmdlets debería mirar considerando que estoy copiando a un servidor remoto?
¿Cómo leo los parámetros en variables?
¿Cómo reinicio IIS?
Teniendo en cuenta que podría querer copiar varias carpetas, ¿cómo escribo un script de PowerShell que invoca un script de PowerShell?
powershell
the_drow
fuente
fuente

Respuestas:
Get-ChildItemle permite enumerar archivos y directorios, incluso de forma recursiva con filtros de nombre de archivo.Copy-Itemle permite copiar un archivo.Hay mucha superposición en términos de selección de archivos, a menudo
Copy-Itempor sí solo es suficiente dependiendo de los detalles de lo que necesita (por ejemplo, ¿desea conservar la estructura de la carpeta?)Para copiar todo
*.fooy*.bardesde StartFolder a DestFolder:Si necesita preservar la estructura de la carpeta, las cosas se ponen más difíciles porque necesita construir el nombre de la carpeta de destino, algo como:
Pero
robocopyes probable que sea más fácil:Al final, la forma de elegir dependerá de los detalles de lo que se necesita.
(En lo anterior he evitado los alias (por ejemplo, en
Copy-Itemlugar decopy) y uso explícitamente los nombres de los parámetros, incluso si son posicionales).fuente
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"con y sin -recurrencia - no pasa nadaNo puedo abordar la parte de IIS, pero la copia del archivo mientras se preserva la estructura del directorio puede ser mucho más simple de lo que se muestra en las otras respuestas:
El
-Containerargumento es la parte mágica que replicará la estructura en el destino tal como está en la fuente.fuente
-Include... aunque puedo hacer que copie todo sin-IncludeLa única solución que funcionó para mí es
Otras soluciones que usan
-Includeparámetros no funcionaron.fuente
Como algunas personas mencionaron aquí -Incluir no funciona.
Para que funcione con carpetas anidadas, utilicé el enfoque de dos pasos: 'filtro' + eliminar carpetas vacías
fuente
Si está utilizando IIS7, puede usar un componente nativo para replicar contenido entre servidores IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
fuente