Het Gebruik van de BITS Module voor het Overbrengen van Bestanden met behulp van PowerShell

Een minder bekend onderdeel van Windows is de Background Intelligent Transfer-Service (BITS). Dit is een service, vooral voor programmeurs en systeem beheerders, die werkt voor het overzetten van bestanden naar en van HTTP en de SMB servers.

Hier zijn een aantal van de zeer nuttige functies van deze dienst:

  • Handvat Netwerk Onderbrekingen
  • Pauzeren en Hervatten, zelfs van een Reboot
  • Rekening Netwerk Kosten

In dit artikel onderzoeken we hoe te gebruiken BITS in PowerShell uit te voeren en controle van de bestandsoverdracht.

Aan de Slag met de BITS

De BITS cmdlets zijn eigenlijk gebouwd-in als standaard PowerShell commando ‘ s. We kunnen zien wat deze commando ‘ s worden door het uitvoeren van Get-Opdracht | Waar-Object Bron -EQ ‘BitsTransfer’.

Hoewel PowerShell 7 is cross-platform, dit is gebaseerd op een Windows-specifieke dienst, dus deze functionaliteit is niet beschikbaar voor andere besturingssystemen.

Start-BitsTransfer

Om een nieuwe overdracht BITS-taak, die je vervolgens kunt toevoegen of verwijderen van bestanden, het gebruik van de Start-BitsTransfer cmdlet. Gewoon de overdracht van bestanden tussen twee locaties, kunt u een bron en bestemming, zoals hieronder weergegeven.

$Params = @{
“Bron” = ‘\\Server01\C$\TestFile.txt’
“Bestemming” = ‘\\Server02\C$\TestFile.txt’
}

Start-BitsTransfer @Params

Om te profiteren van de andere BITS cmdlets, is het het beste om de overdracht BITS-taak een goede Naam, die vervolgens kunnen worden verwezen later. Met behulp van de dezelfde @Params verklaring, kunnen wij u een naam, in dit geval TestTransfer.

Start-BitsTransfer @Params -DisplayName ‘TestTransfer’

Standaard worden de BITS overdracht wordt uitgevoerd op de Voorgrond prioriteit, wat betekent de hoogste snelheid van gegevensoverdracht beschikbaar. Dit kan gemakkelijk worden veranderd door een van de prioriteiten hieronder vermeld.

  • Voorgrond (standaard): de Overdracht van de taak met de hoogste prioriteit en concurreert voor netwerkbronnen met andere toepassingen.
  • Hoog: Transfers met een hogere prioriteit dan normaal, maar nog steeds is gebaseerd op het gebruik van de ongebruikte bandbreedte van de client computer.
  • Normaal: Hetzelfde als een hoge prioriteit, maar met een lagere prioriteit.
  • Laag: Hetzelfde als normale prioriteit, maar met de laagst mogelijke prioriteit.Start-BitsTransfer @Params -DisplayName ‘TestTransfer’ Prioriteit ‘Normaal’

Zoals vermeld in het begin, BITS heeft de unieke mogelijkheid om netwerk kosten in rekening. Om dit te doen, gebruiken we de TransferPolicy parameter.

$Params = @{
“Bron” = ‘\\Server01\C$\TestFile.txt’
“Bestemming” = ‘\\Server02\C$\TestFile.txt’
“DisplayName” = ‘TestTransfer’
“Prioriteit” = ‘Normal’
“TransferPolicy” = ‘Bedekte’
}

Start-BitsTransfer @Params

In dit voorbeeld, met een maximum houdt in dat er sprake is van een bovengrens voor het netwerk verkeer van en respect voor die grens.

Tot slot, om te beginnen met dit werk op de achtergrond en terug onze console voor gebruik, het passeren van de Asynchrone parameter stelt ons in staat om de achtergrond van de taak.

Start-BitsTransfer @Params -Asynchrone

Get-BitsTransfer

Wat als we wilden bekijk alle lopende BITS banen, dat is eenvoudig met de Get-BitsTransfer cmdlet.

Aangezien we de naam van onze transfer met TestTransfer eerder op, het is makkelijk te vinden. Draait Voor-BitsTransfer door zelf een lijst van alle lopende opdrachten.

Add-BitsFile

Nu dat we hebben opgehaald voor onze transfer, kunnen we eigenlijk extra bestanden toevoegen aan deze transfer gewoon door het aanroepen van Add-BitsFile.

$Job = Get-BitsTransfer -Naam ‘TestTransfer’

$Params = @{
“Bron” = ‘\\Server01\C$\TestFile2.txt’
“Bestemming” = ‘\\Server02\C$\TestFile2.txt’
}

$Baan | Add-BitsFile @Params

Suspend-BitsTransfer

Met al deze bestanden overdragen, soms is er een behoefte om te pauzeren voor een transfer. Dit kan gebeuren om verschillende redenen. Vaak is dat omdat van een overbelast netwerk of systeem opnieuw opgestart moet worden in het midden van een transfer. Dit is eenvoudig met BITS, met behulp van de Suspend-BitsTransfer functionaliteit.

$Baan | Suspend-BitsTransfer

Cv-BitsTransfer

Natuurlijk, op een gegeven moment moeten wij de taak opnieuw te starten, en nogmaals, het is zo simpel als het passeren van de taak in de Cv-BitsTransfer.

$Job | Cv-BitsTransfer

Set-BitsTransfer

Als een taak is nog steeds actief, het is mogelijk om een update van de baan met de nieuwe instellingen met behulp van de Set-BitsTransfer cmdlet. In het voorbeeld hieronder hebben we de taak om de hoogst mogelijke prioriteit op het netwerk. Oorspronkelijk stellen we de taak om het Normale, maar we nodig hebben om de klus te klaren vroeg dus we gebruik Voorgrond.

$Baan | Set-BitsTransfer -Prioriteit ‘Voorgrond’

Compleet-BitsTransfer

Misschien hebben we opgeschort een baan en we zijn klaar voor de afwerking van de overdracht. Met behulp van de Volledig-BitsTransfer cmdlet kunnen we vertellen BITS om te voltooien van alle actieve overdracht van taken.

Get-BitsTransfer | Complete-BitsTransfer

Verwijderen-BitsTransfer

Ten slotte, als we gewoon moeten verwijderen van een taak, of niet draait, kunnen we gebruik maken van de Haal-BitsTransfer cmdlet.

Get-BitsTransfer -Naam “JobToBeRemoved” | Verwijderen-BitsTransfer -Bevestigen:$False

Met -Bevestigen:$False, betekent dat de banen zullen worden verwijderd zonder een vraag om bevestiging.

Extra BITS Mogelijkheden

De voorbeelden in de processen die hierboven werden geconcentreerd op het downloaden van een bestand van de ene naar de andere server. BITS heeft de mogelijkheid om een bestand te uploaden, ook met authenticatie.

$Params = @{
“Bron” = ‘\\Server01\C$\TestFile.txt’
“Bestemming” = ‘<http://server02/uploaddir/testfile.txt>’
“TransferType” = ‘Upload’
}

Start-BitsTransfer @Params

Het is belangrijk op te merken dat het standaard gedrag van BITS is te downloaden van meerdere bestanden automatisch. Dit is niet hetzelfde probleem met uploaden, en om deze beperking te omzeilen kunt u de buis in meerdere bestanden naar de Start-BitsTransfer cmdlet.

Als de bestemming server is beveiligd door authenticatie, kunt u het type zoals Basic, Digest, NTLM, Onderhandelen, of een Paspoort met behulp van de Authenticatie parameter. Natuurlijk met behulp van authenticatie, zal je nodig hebt om in een referentie die kan gemakkelijk gedaan worden met de Identificatie van de parameter. Dit duurt standaard PSCredential objecten en werkt goed om je geheimen veilig en gecodeerd in uw scripts.

Conclusie

BITS is een fantastische manier om de overdracht van bestanden tussen servers en tussen web servers. Met de mogelijkheid om onderbreken en hervatten, is het gemakkelijk om de controle van de overdracht van bestanden via het netwerk links, zelfs degenen die moeten worden gemodereerd vanwege de mogelijke kosten.

Ondanks dit werkt alleen op Windows, BITS is een krachtige tool te integreren in uw scripts en nauwkeurig bestand transfers, zelfs voor opnieuw opstarten. Mogelijk het vervangen van de traditionele Windows-hulpprogramma ‘ s, zoals Robocopy, BITS houdt zich aan de PowerShell-methodiek en met de mogelijkheid om de bestandsoverdracht op de achtergrond als jobs, en integreert naadloos in bestaande automatisering en scripts.


Posted

in

by

Tags: