Je tente d'exécuter un script PowerShell tous les soirs, de copier des fichiers PDF de C: \ share1 vers C: \ share2 et d'écrire dans le journal des événements.Copier des fichiers et ignorer ceux en cours
Mon bit courant de script de copie de fichier ressemble à ceci:
Try
{
get-childitem -Path C:\Share1 | ForEach-Object { Copy-Item $_.FullName C:\share2 -verbose }
#Writes to event log as success.
}
Catch
#Logs the event as failed
}
La question que je lance ici dans est que les fichiers copiés beeing/remplacés sont en cours d'utilisation. Lorsqu'un fichier est utilisé le script cesse de copier ce fichier dit avec une erreur:
PS>TerminatingError(Copy-Item): "The process cannot access the file 'C:/share2/1.pdf' because it is being used by another process."
Je voudrais au moins modifier mon script pour qu'il continue de copier les fichiers restants.
Si j'avais par exemple 100 fichiers et que le 3ème était utilisé, tout le transfert s'arrête.
Comment puis-je modifier mon script pour continuer sur les éléments restants?
Quelle est l'erreur _entire_ que vous recevez lorsque ce problème se produit? Vous pouvez «attraper» les types d'erreurs spécifiques. – gvee
Il commence à copier les fichiers et s'arrête sur celui qui est utilisé par une autre machine, puis passe à "Transcript arrêté" avec le "PS terminatingError" mentionné ci-dessus comme le contenu du fichier de sortie de transcription. – Vhoyland