Ecriture d'un script powershell pour copyr des files avec une certaine extension d'un dossier à l'autre

Je voudrais écrire un script powershell qui obtient les parameters suivants comme input:
Le dossier à copyr, les extensions le permet, un dossier à copyr et un boolean indiquant si le changement doit redémarrer IIS, nom d'user et mot de passe.
Quelles cmdlets devrais-je envisager de considérer que je copyr sur un server distant?
Comment lire les parameters en variables?
Comment puis-je redémarrer IIS?

En supposant que je pourrais vouloir copyr plusieurs dossiers, comment puis-je écrire un script powershell qui invoque un script powershell?

3 Solutions collect form web for “Ecriture d'un script powershell pour copyr des files avec une certaine extension d'un dossier à l'autre”

Get-ChildItem vous permet d'énumérer des files et des directorys, y compris récursivement avec des filters de nom de file. Copy-Item vous permet de copyr un file.

Il y a beaucoup de chevauchement en termes de sélection des files, souvent Copy-Item est suffisant en fonction des détails de ce dont vous avez besoin (par exemple, souhaitez-vous conserver la structure du dossier?)

Pour copyr tout *.foo et *.bar de StartFolder à DestFolder:

 Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "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:

 $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 } 

Mais le robocopy est susceptible d'être plus facile:

 robocopy StartFolder DestFolder *.foo *.bar /s 

En fin de count, 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 que copy ) et utiliser explicitement les noms de parameters même s'ils sont positionnels.)

Je ne peux pas aborder la partie IIS, mais la copy du file tout en préservant la structure du directory peut être beaucoup plus simple que dans les autres réponses:

 Copy-Item -path "StartFolder" -Recurse -Include "*.foo","*.bar" -Destination "DestFolder" -Container 

L'argument -Container est la partie magique qui répliquera la structure dans la destination telle qu'elle se trouve dans la source.

Si vous utilisez IIS7, vous pouvez utiliser un composant natif pour répliquer le contenu entre les servers IIS: http://blog.theplanet.com/2010/05/18/mirroring-server-content-and-configuration-in-iis7/

  • Déployer Server 2012 avec le rôle DNS en utilisant WDS et le file de réponses
  • Besoin d'aide pour créer une connection ODBC MySQL
  • Comment puis-je comparer les correctifs installés entre deux servers Windows utilisant PowerShell?
  • D'où proviennent dsrm, dsadd et dsmove?
  • Modification / définition de types Mime avec Powershell?
  • Est-il impossible d'append un nom de domaine de manière interactive à une application Web?
  • Comment vérifier PowerShell v2.0 est-il installé sur une list de servers?
  • Configurer et surveiller le server DHCP Windows 2012 avec Powershell
  • Alternative for Obssolete -VhdDestinationPath Parameter
  • Comment mettre des zones DNS dans Windows Server 2012R2 sous git Version Control
  • Convertir le nombre de membres Get-ADPrincipalGroup, de sorte que je puisse l'écrire au champ Notes
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.