6
votes

Vérifier la copie du fichier dans PowerShell

Y a-t-il un moyen facile de vérifier que tous les fichiers ont été copiés correctement lors de l'appel de copie-élément? J'ai pensé à utiliser la somme de contrôle sur tous les fichiers, mais j'imagine que PowerShell (V2) aurait déjà quelque chose et je ne le trouve pas.


0 commentaires

5 Réponses :


2
votes

Non Il n'y a pas et voici pourquoi. L'élément de copie est une cmdlet générique qui fonctionne pour tous les fournisseurs d'espace de noms. Donc, les éléments copiés peuvent être des fichiers ou des paramètres de registre, ou des sections de configuration IIS, etc. Vérification d'une copie de fichier est un peu différente de la vérification d'une copie des paramètres de registre.

mise à jour: Comme indiqué par @Dave_s, le commutateur de vérification de la commande XCopy n'est pas le type de vérification que vous recherchez.

Si vous copiez des fichiers texte, vous pouvez utiliser le commandement de la commande PowerShell comparer-objet .

Si vous copiez des fichiers binaires, vous pouvez utiliser la commande system fc.exe avec / b interrupteur.


1 commentaires

Cette réponse est maintenant obsolète. PowerShell a eu la cmdlet Get-FileHash depuis un certain temps et il s'agit d'une méthode efficace et efficace d'utilisation de méthodes courantes (Hash de cryptage) pour confirmer les fichiers ont été copiés correctement. Ceci est la bonne réponse Stackoverflow.com/a/29634939/704977



5
votes

Je sais que c'est un vieux fil, mais je pensais poster cela juste au cas où quelqu'un d'autre la lit ... The / V Commutateur ne vérifie pas les données! Cela garantit simplement que la copie est lisible. Voir http://support.microsoft.com/kb/126457 pour plus de détails.


1 commentaires

C'est un lien mort maintenant. Pouvez-vous mettre à jour la réponse avec Détail de ce que le commutateur / V s'applique aussi?



0
votes

Ma solution préférée actuelle est XCopy en combinaison avec un audit HASHDEEP. Peut être emballé ensemble dans un petit fichier chauve-souris.


0 commentaires

2
votes

Juste une mise à jour, PowerShell V4 inclut get-filehash qui peut être utilisé pour vérifier qu'un fichier a été copié avec succès. Si le hachage est le même, le fichier a été copié avec succès. Lien vers Bibliothèque TechNet .

J'utilise cette réponse pour venir avec le Suivant.

(Get-Childitem -File -Path C: \ Files -Recurse) .fulname | foreach {get-filehash $ _ -algorithm md5} peut également être canalisé dans l'exportation-CSV pour comparer facilement les hachages de fichiers.


3 commentaires

Downvote pour une "algorithme" mal orthographique et ajout de 5 minutes à comprendre ce qui ne va pas avec PowerShell. : P


Revenir au commentaire, au moins j'utilise des noms PARAM complexes! Au lieu du sténographie -alg


J'ai trouvé (get-filehash $ file_path) .HASH a travaillé efficacement. Pas besoin d'épeler l'algorithme du tout :)



0
votes

Vous pouvez utiliser -verbose

copy-item -path $ source-destination $ destination -recurse -force -verbose


0 commentaires