Je voudrais écrire un script PowerShell qui obtient les paramètres suivants en entrée:
dossier à copier, extensions autorisées, dossier à copier et un booléen indiquant si la modification doit redémarrer IIS, nom d'utilisateur et mot de passe.
Quelles applets de commande dois-je envisager étant donné que je copie sur un serveur distant?
Comment lire les paramètres en variables?
Comment redémarrer IIS?
En pensant que je pourrais vouloir copier plusieurs dossiers, comment puis-je écrire un script PowerShell qui invoque un script PowerShell?
powershell
the_drow
la source
la source
Réponses:
Get-ChildItem
vous permet de lister les fichiers et répertoires, y compris récursivement avec des filtres de nom de fichier.Copy-Item
vous permet de copier un fichier.Il y a beaucoup de chevauchements en termes de sélection des fichiers, souvent
Copy-Item
seul est suffisant en fonction des détails de ce dont vous avez besoin (par exemple. Voulez-vous conserver la structure des dossiers?)Pour copier tout
*.foo
et*.bar
de StartFolder vers DestFolder:Si vous devez conserver la structure du dossier, les choses deviennent plus difficiles, car vous devez créer le nom du dossier de destination, quelque chose comme:
Mais
robocopy
est susceptible d'être plus facile:En fin de compte, la façon de choisir dépendra des détails de ce qui est nécessaire.
(Dans ce qui précède, j'ai évité les alias (par exemple
Copy-Item
plutôt quecopy
) et j'utilise explicitement les noms de paramètres même s'ils sont positionnels.)la source
Copy-Item -path "C:\Users\username\Pictures\" -include "*.JPG", "*.PNG" -Destination "D:\"
avec et sans -recurse - rien ne se passeJe ne peux pas traiter la partie IIS, mais la copie du fichier tout en préservant la structure du répertoire peut être beaucoup plus simple que celle indiquée dans les autres réponses:
L'
-Container
argument est la partie magique qui répliquera la structure dans la destination comme dans la source.la source
-Include
... même si je peux tout copier sans-Include
La seule solution qui a fonctionné pour moi est
D'autres solutions utilisant des
-Include
paramètres n'ont pas fonctionné.la source
Comme certaines personnes l'ont mentionné ici, l' inclusion ne fonctionne pas.
Pour le faire fonctionner avec des dossiers imbriqués, j'ai utilisé l'approche en deux étapes: «filtrer» + supprimer les dossiers vides
la source
Si vous utilisez IIS7, vous pouvez utiliser un composant natif pour répliquer le contenu entre les serveurs IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/
la source