Provides background information about the Background Intelligent Transfer
This topic provides information about BITS, BITS transfer types, BITS
transfer persistence, BITS transfer priority, the Windows PowerShell and
BITS cmdlets, and BITS server configuration. This topic also provides
links to more information about BITS.
BITS is a file transfer service that provides a scriptable interface
through Windows PowerShell. BITS transfers files asynchronously in the
foreground or in the background. And, it automatically resumes file
transfers after network disconnections and after a computer is restarted.
Background transfers use only idle network bandwidth in an effort to
preserve the user?s interactive experience with other network
applications such as Internet Explorer. BITS does this by examining the
network traffic and then using only the idle portion of the network
bandwidth. BITS continuously throttles its use of the bandwidth as the
user increases or decreases their use of the bandwidth. BITS performs
the transfers asynchronously, which means that your program or script
does not have to be running for BITS to perform the transfer. Both
uploads and downloads are supported. BITS is particularly suitable for
copying files from an HTTP location in an Internet Information Services
virtual directory to the logical drive of a client. Standard server
message block (SMB) copy operations are also supported. In addition to
the scripting interface provided by Windows PowerShell, BITS provides a
set of COM APIs to allow programming access.
BITS Transfer Types
There are three types of BITS transfer jobs:
- A download job downloads files to the client computer.
- An upload job uploads a file to the server.
- An upload-reply job uploads a file to the server and receives a
reply file from the server application.
BITS Transfer Persistence
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
BITS Transfer Priority
BITS provides one foreground and three background priority levels that
you can use to prioritize transfer jobs. Higher priority jobs preempt
lower priority jobs. Jobs at the same priority level share transfer time,
which prevents a large job from blocking small jobs in the transfer
queue. Lower priority jobs do not receive transfer time until all the
higher priority jobs are complete or in an error state. Background
transfers are optimal because BITS uses idle network bandwidth to
transfer the files. BITS increases or decreases the rate at which files
are transferred based on the amount of idle network bandwidth that is
available. If a network application begins to consume more bandwidth,
BITS decreases its transfer rate to preserve the user's interactive
experience. BITS supports multiple foreground jobs and one background
transfer job at the same time.
Windows PowerShell and the BITS Cmdlets
Windows PowerShell implements BITS functionality through the BITS module
for Windows PowerShell. The BITS module loads a set of BITS-specific
cmdlets. You can use these cmdlets to complete the end-to-end tasks
that are necessary to manage the transfer of files between computers.
When the BITS module for Windows PowerShell is loaded, the following
BITS cmdlets are available.
Add-BitsFile Adds one or more files to a BITS transfer.
Complete-BitsTransfer Completes a BITS transfer.
Get-BitsTransfer Gets a single or multiple BITS transfer.
Remove-BitsTransfer Deletes a BITS transfer.
Resume-BitsTransfer Resumes a suspended BITS transfer.
Set-BitsTransfer Configures BITS transfer jobs.
Start-BitsTransfer Creates and starts a BITS transfer job.
Suspend-BitsTransfer Suspends a BITS transfer job.
To copy a file using BITS:
1. Create a BITS transfer job by using the Start-BitsTranfer cmdlet,
optionally with the Suspend parameter.
2. Add files to the BITS transfer job by using the Add-BitsFile
3. Start the BITS transfer by using the Resume-BitsTransfer cmdlet.
4. Check the status of the BITS transfer job by using the
A simple Windows PowerShell BITS file transfer command might resemble
the following command:
C:\PS> Start-BitsTransfer http://server01/servertestdir/testfile1.txt c: