Troubleshoot VMM: BITS Troubleshooting

Troubleshoot VMM: BITS Troubleshooting

Background Intelligent Transfer Service (BITS) transfers files (downloads or uploads) between a client and server and provides progress information related to the transfers. You can also download files from a peer.  BITS can transfer files asynchronously between a client and a server.  VMM uses BITS to transfer payload between managed computers.  These data transfers are encrypted by using a self-signed certificate generated at the time a host machine is added to VMM.


Verify BITS outside of VMM


The following steps can be used to verify that BITS is working properly outside of VMM.

To verify BITS:

  1. Download BITSadmin.exe using the above link. It is also in the Windows Server 2003 Resource Kit.  It does not appear in the tools directory, but is accessible from the command line.
  2. Click on … Start > Programs > Windows Resource Kit Tools > Command Shell
  3. This should open an elevated command prompt
  4. Create a C:\Temp directory if one does not already exist
  5. Type the following command:  bitsadmin /transfer myDownloadJob /download /priority normal c:\temp\dbg_amd64_6.11.1.404.msi
  6. This command will automatically use BITSadmin.exe to test BITS functionality by downloading a file from our website to the local temp directory
  7. This should take 10-20 minutes to complete
  8. This test should be ran on the VMM management server, Host computer and Source machine


BITS Compact Server


This method will allow you to test BITS in the same manner in which VMM uses BITS.
On the destination host, try the following steps: 

  1. Disable BITS Compact Server.  This feature is found in the Add/Remove Feature wizard.
  2. Restart computer
  3. Re-enable BITS Compact Server

If you tried these steps and still have problems, run the following command on the host machine:

winrm invoke CreateJob wmi/root/microsoft/bits/BitsClientJob @{Displayname="Test of fake job";RemoteUrl="";LocalFile="PATH_TO_LOCAL_DESTINATION";Type="0";ServiceAccount="0";Suspend="true";Description="Description for fake job"}

Replace PATH_TO_LOCAL_DESTINATION with a path to an existing directory, but to a non-existing file (e.g., c:\httpRec\test.txt, where directory c:\httpRec exists, but test.txt in that directory does not). Don't provide path to an existing file, as it might overwrite it. This will attempt to create a BITS client job to download a file from a fake url.
Take note of the output.
If job succeeds, record the JobId.

    JobId = {8DC2BE2F-0D2A-41B8-AEAD-F6DBED586E98}

    ReturnValue = 0
If above command succeeds, clean up the job by the following command:

winrm Invoke SetJobState wmi/root/microsoft/Bits/BitsClientJob?JobID={8DC2BE2F-0D2A-41B8-AEAD-F6DBED586E98} @{JobState="0"}

Replacing jobID with the job ID for your job. If the JobId was not returned with the CreateJob command above, you can find created dummy job by:

bitsadmin /list /allusers

Look for job with above name/description. 

Also look for any Suspended jobs and delete by using the following commands:

   Bitsadmin /cancel {Job_GUID}

BITS Traces 

Occasionally it will be necessary to obtain BITS traces while reproducing the error.

Create bitslog.cmd using below batch file

Open an elevated powershell and navigate to the "C:\bits folder"
Type the following commands:
     Bitslog /enable
     Bitslog /collect c:\bits                     # choose an appropriate directory name
Perform operations and reproduce failure
Type the following commands from powershell
     Bitslog /disable
Collect the bits.log file for analysis

The following batch file should be renamed bitslog.cmd

@echo off

REM Script for enabling bits logging/collection to be used

REM while reporting BITS issues





set DEFAULT_LOG_DIR=%TEMP%\bits-logs

set BitsKey=HKLM\Software\Microsoft\Windows\CurrentVersion\BITS


if {%1} == {} goto Usage


if {%1} == {/enable} goto :EnableLog

if {%1} == {/e} goto :EnableLog


if {%1} == {/disable} goto :DisableLog

if {%1} == {/d} goto :DisableLog


if {%1} == {/collect} goto :CollectLog

if {%1} == {/c} goto :CollectLog


goto :Usage



if {%2} == {} (

set log_size=%DEFAULT_LOG_SIZE%

) else (

set log_size=%2


echo Enabling logging for BITS with log file size as %log_size%

reg add %BitsKey% /v LogFileFlags /t REG_DWORD /d 0xfbcf /f > NUL

reg add %BitsKey% /v LogFileSize /t REG_DWORD /d %log_size% /f > NUL


echo Restarting BITS for registry values to take effect

net stop bits

net start bits

goto :eof




echo Disabling logging for BITS

reg delete %BitsKey% /v LogFileFlags /f > NUL

reg add %BitsKey% /v LogFileSize /f > NUL


echo Restarting BITS for registry values to take effect

net stop bits

net start bits

goto :eof




if {%2} == {} (

set log_dir=%DEFAULT_LOG_DIR%

) else (

set log_dir=%2


if NOT EXIST %log_dir% (

md %log_dir% > NUL


echo Failed to create the log dir %log_dir%. Not saving logs

goto :eof



echo Copying the BITS logs to %log_dir% directory

REM Flush the current log for BITS

logman update bits -ets -fd > NUL

copy %windir%\system32\bits.log %log_dir% /y

copy %windir%\system32\bits.bak %log_dir% /y


REM copy the build info

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion" /v BuildLab >



REM get the output of bitsadmin

bitsadmin /list /allusers /verbose > %log_dir%\AllJobs.txt

goto :eof




echo BITSLOG usage

echo bitslog /enable [^<no^>] - To enable BITS logging and specify the log size as ^<no^> MB

echo BITS service will be restarted

echo If ^<no^> is not specified, default is 20 MB

echo bitslog /disable - To disable BITS logging

echo BITS service will be restarted

echo bitslog /collect [^<dir^>] - To collect BITS logs in the specified dir

echo If ^<dir^> is not specified, default is %%TEMP%%\bits-logs

goto :eof

Useful KB Articles and Blogs

More VMM Troubleshooting topics:

System Center 2012 – Virtual Machine Manager (VMM) General Troubleshooting Guide




Leave a Comment
  • Please add 5 and 2 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Page 1 of 1 (2 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Page 1 of 1 (2 items)