Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 2
  • 1.3K

Pracujemy w środowisku Windows 7 i Windows Server 2008, naszym zadaniem jest automatyzacja kopiowania plików między udziałami sieciowymi przy użyciu skryptów PowerShell 2.0.
Obecnie używamy polecenia copy-item jak w przykładzie poniżej:

Copy-Item C:\dir\File.txt -destination \\Server2\Share\File.txt


Polecenie działa poprawnie jednak w przypadku dużych plików o wielkości 30GB i więcej powoduje zawieszanie skryptu a w przypadku problemów z połączeniem w trakcie transferu wymaga ponawiania operacji.
W jaki sposób kopiować duże pliki między udziałami sieciowymi tak, aby nie powodować zawieszenia skryptu i pozwolić na wznawianie przerwanych transferów?

Uczestnik szkolenia
  • Zapytał
  • @ Uczestnik szkolenia | 29.05.2013

Odpowiedź (1)

  • 6

Rozwiązaniem problemu jest wykorzystanie modułu BitsTransfer dostępnego dla Windows 7 i Windows 2008.

Należy utworzyć plik o nazwie filelist.txt i następującej strukturze:

Source, Destination
C:\dir\bigFile1.bin, \\Server\Share\bigFile1.bin
C:\dir\bigFile2.bin, \\Server\Share\bigFile2.bin



Następnie zaimportować moduł BitsTransfer poleceniem Import-Module  oraz użyć polecenia:

Import-CSV filelist.txt | Start-BitsTransfer


Wykorzystanie modułu pozwala na automatyczne wznawianie transferu w sytuacji gdy połączenie zostanie przerwane:

BITS continues to transfer files after an application exits if the user
who initiated the transfer remains logged on and if a network connection
is maintained. BITS suspends the transfer if a connection is lost or if
the user logs off. BITS also persists the transfer information when a
user logs off, when network disconnections occur, and when a computer is
restarted. When the user logs on again, when the network is reconnected,
and when the computer is restarted, BITS resumes the user's transfer job.


Źródło: Technet               

  • Odpowiedział
  • @ | 29.05.2013
  • TRENER ALTKOM AKADEMII