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-ChildItem
le permite enumerar 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
desde 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
robocopy
es 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-Item
lugar 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
-Container
argumento 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-Include
La única solución que funcionó para mí es
Otras soluciones que usan
-Include
pará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