Gostaria de escrever um script do PowerShell que obtém os seguintes parâmetros como entrada:
Pasta para copiar, extensões permite, pasta para copiar e um booleano indicando se a alteração deve reiniciar o IIS, nome de usuário e senha.
Quais cmdlets devo considerar considerando que estou copiando para um servidor remoto?
Como leio os parâmetros em variáveis?
Como reinicio o IIS?
Considerando que posso copiar várias pastas, como escrevo um script do PowerShell que chama um script do PowerShell?
powershell
the_drow
fonte
fonte
Respostas:
Get-ChildItem
permite listar arquivos e diretórios, inclusive recursivamente com filtros de nome de arquivo.Copy-Item
permite copiar um arquivo.Há muita sobreposição em termos de seleção dos arquivos, muitas vezes
Copy-Item
por si só é suficiente, dependendo dos detalhes do que você precisa (por exemplo, deseja manter a estrutura da pasta?)Para copiar tudo
*.foo
e*.bar
do StartFolder para o DestFolder:Se você precisar preservar a estrutura da pasta, as coisas ficarão mais difíceis porque você precisará criar o nome da pasta de destino, algo como:
Mas
robocopy
é provável que seja mais fácil:No final, a maneira de escolher dependerá dos detalhes do que é necessário.
(No exemplo acima, evitei aliases (por exemplo, em
Copy-Item
vez decopy
) e usei explicitamente nomes de parâmetros, mesmo que sejam posicionais.)fonte
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"
com e sem -recurse - nada aconteceNão consigo abordar a parte do IIS, mas a cópia do arquivo, preservando a estrutura de diretórios, pode ser muito mais simples do que a mostrada nas outras respostas:
O
-Container
argumento é a parte mágica que replicará a estrutura no destino, assim como na origem.fonte
-Include
... embora eu possa fazer com que copie tudo sem-Include
A única solução que funcionou para mim é
Outras soluções que usam o
-Include
parâmetro não funcionaram.fonte
Como algumas pessoas mencionadas aqui - Incluir não funciona.
Para fazê-lo funcionar com pastas aninhadas, usei a abordagem de duas etapas: 'filtro' + excluir pastas vazias
fonte
Se você estiver usando o IIS7, poderá usar o componente nativo para replicar o conteúdo entre os servidores IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
fonte