6
votes

Voulez-vous attendre la copie complète à l'aide de PowerShell Copy-Item

Je copie des fichiers d'une machine à Windows à une autre à l'aide de la copie-élément dans le script PowerShell.

Mais je veux attendre la copie terminée, l'élément de copie PowerShell est un moyen d'appel non bloquant, cela déclenche simplement la copie et le retourne au script, mais je souhaite attendre la copie terminée.

Y a-t-il un moyen de le faire?


2 commentaires

Ceci est tout simplement faux. L'élément de copie bloque effectivement. Cela devrait probablement être fermé.


L'élément de copie est non bloqué. Si je tire une commande d'élément de copie et vérifiez si le chemin existe immédiatement, il renvoie false


3 Réponses :


-3
votes

élément-élément bloque. Je viens de copier un fichier de 4,2 Go d'une part sur notre réseau Gigabit à ma machine locale. Mon powerShell invite suspendu et ne revenait pas plusieurs minutes.


2 commentaires

Ça n'est pas correct. L'élément de copie ne bloque pas si l'élément est suffisamment petit pour s'adapter au cache. En outre, si vous copiez plusieurs fichiers volumineux avec plusieurs commandes d'élément de copie, les uns après les autres, même les plus grandes que le cache disponible, à la fin du premier fichier, une fois que suffisamment de données ont été écrites sur le disque pour s'adapter au reste de la première. Fichier dans le cache Copy-item se termine même s'il reste encore 100 de MB pour aller. En regardant le moniteur de ressources de quels fichiers sont écrits pendant la modification d'un fichier à la suivante vous montrera cela.


Également sur des fichiers 128MIB mon serveur Windows 2008R2 convient à environ 10 fichiers dans le cache immédiatement, puis s'installe pour avoir environ 4 fichiers dans le cache à la fois, après la copie d'environ 30 fichiers.



-4
votes

Il semble que cela ne soit pas bloqué ici pour de très petits fichiers. J'utilise:

Start-Sleep -s 3


0 commentaires

3
votes

Peut-être "Copier-Item [...] | Out-Null" aidera à attendre l'achèvement.

"Out-NULL supprime en réalité la sortie au lieu de le rouler sur la console PowerShell, le script s'asseoira et attendra que le contenu soit supprimé avant de passer."

L'explication vient d'ITProtoday.com: https://www.itododay.com/powershell/forcing-powershell- wait-processus-complet


0 commentaires