Table of Contents Verify BITS outside of VMMBITS Compact Server BITS TracesUseful KB Articles and Blogs 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.
The following steps can be used to verify that BITS is working properly outside of VMM.
To verify BITS:
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:
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="http://download.microsoft.com/download/D/0/E/D0E6D2C1-2593-4017-B26D-7375BC9263D5/PowerShell_Setup_amd64.msi";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. Example: CreateJob_OUTPUT
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}
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
setlocal ENABLEDELAYEDEXPANSION
set DEFAULT_LOG_SIZE=20
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
:EnableLog
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
:DisableLog
echo Disabling logging for BITS
reg delete %BitsKey% /v LogFileFlags /f > NUL
reg add %BitsKey% /v LogFileSize /f > NUL
:CollectLog
set log_dir=%DEFAULT_LOG_DIR%
set log_dir=%2
if NOT EXIST %log_dir% (
md %log_dir% > NUL
if ERRORLEVEL 1 (
echo Failed to create the log dir %log_dir%. Not saving logs
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 >
%log_dir%\bld_info
REM get the output of bitsadmin
bitsadmin /list /allusers /verbose > %log_dir%\AllJobs.txt
:Usage
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 bitslog /collect [^<dir^>] - To collect BITS logs in the specified dir
echo If ^<dir^> is not specified, default is %%TEMP%%\bits-logs
More VMM Troubleshooting topics: System Center 2012 – Virtual Machine Manager (VMM) General Troubleshooting Guide
Maheshkumar S Tiwari edited Revision 2. Comment: Added tags
Fernando Lugão Veltem edited Revision 1. Comment: added toc