Utilisation en PowerShell xcopy, robocopy ou copy-item [fermé]

la raison pour passer des fichiers par lots aux scripts powershell est d'améliorer la vérification des erreurs du processus. L'applet de commande pour la copie d'avoir des avantages à cet égard?

si un fichier batch existe déjà qui utilise xcopy pour copier des fichiers par nom de fichier individuellement, y a-t-il un avantage à convertir la syntaxe En copier-item?

Quels sont les avantages d'utiliser robocopy, xcopy et copy-item (par rapport à l'autre)? Par exemple ne robocopy ont un avantage lorsque vous travaillez avec un grand nombre de petits fichiers sur un réseau fiable. Si ce script doit être exécuté simultanément sur des centaines d'ordinateurs pour copier des centaines de fichiers pour chacun d'entre eux sera l'impact sur la prise de décision? La décision doit être porté principalement sur les autorisations des fichiers?

12
demandé sur Adam 2014-12-06 00:10:03

1 réponses

Le principal avantage est juste que vous pouvez envoyer des objets à Copy-Item à travers un tuyau au lieu de cordes ou de lunettes. De sorte que vous pouvez faire:

Get-ChildItem '\fileserver\photos\*.jpeg' -File | `
  Where-Object { ($_.LastAccessTime -ge (Get-Date).AddDays(-1)) -and ($_.Length -le 500000) } | `
  Copy-Item -Destination '\webserver\photos\'

C'est un mauvais exemple (vous pouvez le faire avec Copy-Item -Filter), mais il est facile de trouver à la volée. C'est assez courant quand on travaille avec des fichiers pour finir avec un pipeline de Get-ChildItem, et personnellement, j'ai tendance à faire beaucoup simplement en raison de l' -Recurse -Include bug avec Remove-Item.

vous obtenez aussi La capture d'erreur de PowerShell, des paramètres spéciaux comme -Passthru,-WhatIf,-UseTransaction, et tous les paramètres communs. Copy-Item -Recurse peut répliquer certaines des capacités de copie d'arbre de xcopy, mais il est assez nu-bones.

maintenant, si vous avez besoin de maintenir ACLs, ownership, auditing, etc., alors xcopy ou robocopy seront probablement beaucoup plus faciles parce que cette fonctionnalité est intégrée. Je ne suis pas sûr de savoir comment Copy-Item traite la copie de fichiers cryptés à des endroits non-cryptés (xcopy a une capacité à faire), et je ne crois pas Copy-Item supporte la gestion directe de l'attribut archive.

Si c'est la vitesse que vous cherchez, alors je suppose que xcopy et robocopy allait gagner. Le code géré a des frais généraux plus élevés en général. Xcopy et robocopy offrent également beaucoup plus de contrôle sur la façon dont ils fonctionnent avec le réseau.

7
répondu Bacon Bits 2014-12-05 21:54:43