Wenn Sie große Dateien senden oder herunterladen möchten, ohne Ihr gesamtes Netzwerk zu überlasten, ist BITS (Background Intelligent Transfer Service) äußerst praktisch – und zudem in Windows integriert. Der Dienst arbeitet unauffällig im Hintergrund und verarbeitet große Dateien reibungslos, selbst bei instabiler Verbindung oder wenn Sie Übertragungen pausieren und fortsetzen müssen, ohne von vorne beginnen zu müssen. Es ist erstaunlich, wie oft dieser Dienst übersehen wird, da er sehr zuverlässig ist, insbesondere für Netzwerkadministratoren oder Anwender, die mit großen Mediendateien oder VM-Dateien arbeiten. In dieser Anleitung erfahren Sie, wie Sie BITS-Übertragungen mit PowerShell starten, verwalten und überwachen. Das mag etwas technisch klingen, lohnt sich aber, da die Übertragung mit BITS in manchen Konfigurationen deutlich stabiler ist als das herkömmliche Kopieren, insbesondere bei langsamen oder instabilen Verbindungen. Viele dieser Schritte lassen sich zudem in Automatisierungen oder Skripte integrieren, falls Sie dies regelmäßig tun – gut zu wissen also.
Wie man PowerShell und BITS für die Übertragung großer Dateien verwendet
So laden Sie Dateien mit dem BitsTransfer-Modul von PowerShell herunter
Dies ist die grundlegende Methode: Sie verwenden das PowerShell- Modul BitsTransfer, um einen Dateidownload zu starten. Es ähnelt einem normalen Web-Download, bietet aber Vorteile, da es den Download je nach Bedarf pausieren, fortsetzen und die Bandbreite drosseln kann. Der Befehl `Start-BitsTransfer` ist hierbei hilfreich. Angenommen, Sie möchten beispielsweise eine ISO-Datei von einem Testserver herunterladen:
Start-BitsTransfer –source http://testsite.woshub.loc/netinst.iso -destination c:\temp
Dieser Befehl startet den Download. Auf dem Bildschirm wird ein Fortschrittsbalken angezeigt. Wichtig: Es handelt sich um eine einfache synchrone Übertragung. Sollte Ihre Verbindung während des Downloads abbrechen, müssen Sie den gesamten Vorgang neu starten, da eine Fortsetzung nicht möglich ist. Etwas ärgerlich, aber unkompliziert. Auf manchen Systemen können Probleme auftreten, wenn die Benutzerkontensteuerung (UAC) oder die Firewall-Einstellungen BITS blockieren.Überprüfen Sie diese daher, falls scheinbar nichts passiert.
So aktivieren Sie asynchrone und wiederaufnehmbare Übertragungen
Bei instabiler Internetverbindung oder beim Herunterladen sehr großer Dateien empfiehlt sich der asynchrone Modus. Dadurch läuft der Download im Hintergrund weiter und wird auch nach einem Systemneustart oder einer Netzwerkunterbrechung fortgesetzt, sobald die Verbindung wiederhergestellt ist. Fügen Sie einfach `-asynchronous :` hinzu.
Start-BitsTransfer –source http://testsite.woshub.loc/netinst.iso -destination c:\temp -asynchronous
So blockiert die Übertragung keine anderen Prozesse, und bei Verbindungsabbruch wird sie an der unterbrochenen Stelle fortgesetzt. Das ist besonders sinnvoll beim Übertragen großer Dateien über instabile Netzwerke. Damit BITS reibungslos mit anderem Netzwerkverkehr zusammenarbeitet, weisen Sie ihm mit dem Parameter ` -Priority low` eine niedrigere Priorität zu. So belegt BITS nicht die gesamte Bandbreite und beeinträchtigt weder Ihr Surfen noch Ihre Arbeit.
Verwaltung und Überwachung von BITS-Jobs
Sobald eine Übertragung läuft, sollten Sie sie im Auge behalten. Um alle aktiven BITS-Aufträge anzuzeigen, führen Sie folgenden Befehl aus:
Get-BitsTransfer | select DisplayName, BytesTotal, BytesTransferred, JobState | Format-Table -AutoSize
Dies bietet einen schnellen Überblick darüber, was übertragen wird, wie viel bereits übertragen wurde und welchen Status die Übertragung aktuell hat – ob sie gerade verbunden wird, noch läuft oder bereits abgeschlossen ist. Nach Abschluss einer Übertragung nicht vergessen: Führen Sie diesen Befehl aus, um den Vorgang ordnungsgemäß abzuschließen.
Get-BitsTransfer | where {$_. JobState -eq 'Transferred'} | Complete-BitsTransfer
Dieser Befehl schließt die Übertragung ab, benennt die temporäre Datei (.TMP) wieder in Ihren ursprünglichen Dateinamen um und räumt auf. Andernfalls könnten unfertige Dateien herumliegen, was einfach unpraktisch ist.
Wenn Sie Dateien auf Netzwerkfreigaben oder entfernte PCs kopieren müssen, geben Sie einfach den UNC-Pfad an, zum Beispiel:
Start-BitsTransfer -Source C:\iso\win2022.iso -Destination \\man-srv01\c$\iso -Asynchronous -DisplayName CopyISOtoMan
Und falls es zu Problemen kommt oder Sie eine Übertragung pausieren möchten, verwenden Sie Folgendes:
Get-BitsTransfer -Name CopyISOtoMan | Suspend-BitsTransfer
Um später fortzufahren, führen Sie Folgendes aus:
Get-BitsTransfer -Name CopyISOtoMan | Resume-BitsTransfer -Asynchronous
PowerShell unterstützt sogar die Übergabe von Anmeldeinformationen, falls Sie sich auf einem Remoteserver authentifizieren müssen mit:
Start-BitsTransfer -source http://10.1.1.18/erd65_32.iso -destination c:\temp -asynchronous -Priority low -Authentication NTLM -Credential (Get-Credential)
Und schließlich, falls Sie den Fortschritt obsessiv verfolgen möchten, kann ein kleines Skript den Übertragungsprozentsatz live anzeigen, was durchaus praktisch ist:
Import-Module BitsTransfer $bitsjob = Start-BitsTransfer -Source http://10.1.1.18/erd65_32.iso -Destination c:\temp -Asynchronous while (($bitsjob. JobState. ToString() -eq 'Transferring') -or ($bitsjob. JobState. ToString() -eq 'Connecting')) { Write-Host $bitsjob. JobState. ToString() $Proc = ($bitsjob. BytesTransferred / $bitsjob. BytesTotal) * 100 Write-Host "$Proc %" Start-Sleep -Seconds 3 } Complete-BitsTransfer -BitsJob $bitsjob
Es ist zwar nicht die eleganteste Lösung, aber sie erfüllt ihren Zweck, wenn Sie den Status fortlaufend abrufen möchten. Wichtig: BITS wird für Windows Update und viele Netzwerkprozesse im Hintergrund verwendet und ist daher genauso zuverlässig wie die Windows-eigenen Mechanismen. Das bedeutet, dass es versucht, andere Netzwerkaktivitäten nicht zu beeinträchtigen, wodurch es sich ideal für große oder mehrere gleichzeitige Downloads über WANs eignet.