Using BITS

The following steps show how to perform a file transfer using the Background Intelligent Transfer Service (BITS)  interfaces.

To perform a file transfer

  1. Connect to the BITS service
  2. Create a transfer job
  3. Add files to the job
  4. Start the job
  5. Determine if BITS successfully transferred the files
  6. Complete the job

The previous steps show how to transfer files using the default property values for a job. You can change the default behavior by changing one or more of the job's property values. For example, you can change the priority that the job is processed relative to other jobs in the queue, specify your own proxy setting, and register to receive event notification when BITS has transferred the files. For more information, see Setting and Retrieving the Properties of a Job.

Windows PowerShell provides a simple mechanism to manage many BITS tasks. This section contains the following topics that show how to use Windows PowerShell cmdlets with BITS:


Starting with Windows 10, version 1607, you can also run PowerShell Cmdlets and use BITSAdmin or other applications that use the BITS interfaces from a PowerShell Remote command line connected to another machine (physical or virtual). This capability is not available when using a PowerShell Direct command line to a virtual machine on the same physical machine, and it is not available when using WinRM cmdlets.

A BITS Job created from a Remote PowerShell session will run under that session’s user account context and will only make progress when there is at least one active local logon session or Remote PowerShell session associated with that user account. For more information, see To manage PowerShell Remote sessions.


This section also contains the following topics:

For sample code that uses the BITS interfaces, see BITS Samples and Tools.