Computer step by step
 Make your Pc better
Description:  

This policy setting limits the network bandwidth that Background Intelligent Transfer Service (BITS) uses for
background transfers during the maintenance days and hours. Maintenance schedules further limit the
network bandwidth that is used for background transfers.

         If you enable this setting, then you can define a separate set of network bandwidth limits and set up a
schedule for the maintenance period.

         You can specify a limit to use for background jobs during a maintenance schedule. For example, if
normal priority jobs are currently limited to 256 Kbps on a work schedule, then you can further limit the
network bandwidth of normal priority jobs to 0 Kbps from 8:00 A.M. to 10:00 A.M. on a maintenance schedule.

         If you disable or do not configure this policy setting, then the limits defined for work and/or non-work
schedules will be used.

         Note:  The bandwidth limits that are set for the maintenance period supersede any limits defined for
work and other schedules.

Supported on: Windows 7 or computers with BITS 3.5 installed.
Set up a maintenance schedule to limit the
maximum network bandwidth used for BITS
background transfers
Description Gpedit Regedit CMD Back VBScript PowerShell Script
Gpedit:   

Please perform the following steps:

Please go to Pearl button (Start) and click on the Search programs and files
For more information about the change from Start to Pearl button click here
Type gpedit.msc and press Enter
In the Group Policy window please navigate to Computer Configuration -> Administrative Templates ->
Network -> Background Intelligent Transfer Service (BITS) and open Set up a maintenance schedule to
limit the maximum network bandwidth used for BITS background transfers
.
Not Configured -> is the Default state
Enabled -> apply this GPO
Disabled -> this GPO will not be applied

To finish press ok button and close Group Policy window.
Description Gpedit Regedit CMD Up Back VBScript
Type regedit and press ok
Please confirm User Account Control pop-up
Microsoft official disclaimer

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by
using another method. These problems might require that you reinstall the operating system. Microsoft
cannot guarantee that these problems can be solved. Modify the registry at your own risk.

Note: This registry key is created by Group Policy when this GPO is Enable. The GPO Default state is Not
Configured -> this registry entry is not present. For Disable this registry entry is not present.

Please navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling
and locate:
EnableMaintenanceLimits registry key

Please navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling
\MaintenanceSchedule
and locate:
EndDay registry key
EndHour registry key
HighBandwidthLimit registry key
HighBandwidthType registry key
LowBandwidthLimit registry key
LowBandwidthType registry key
NormalBandwidthLimit registry key
NormalBandwidthType registry key
StartDay registry key
StartHour registry key
Regedit:          

Please perform the following steps:

Please go to Pearl button (Start) and click on the Search programs and files
For more information about the change from Start to Pearl button click here
Description Gpedit Regedit CMD Up Back VBScript PowerShell Script PowerShell Script
   
   
Double click on EnableMaintenanceLimits and edit the value:

To Enable:
Change the data value with:

EnableMaintenanceLimits = 1

EndDay = 5
EndHour = 16
HighBandwidthLimit = 0
HighBandwidthType = 3
LowBandwidthLimit = 0
LowBandwidthType = 3
NormalBandwidthLimit = 0
NormalBandwidthType = 3
StartDay = 1
StartHour = 14

To finish press ok button and close Registry Editor window

Note: Manual editing of this registry key will not be reflected in Group Policy. If you modify this GPO from
Group Policy this registry key will be rewritten.
Description Gpedit Regedit Back CMD VBScript Up
Type cmd, right click on cmd icon under the Programs and click on Run as administrator
Please confirm User Account Control pop-up
Please select, right and copy a registry key from below, then right click on command prompt window
, select Paste and press Enter

Enabled:
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling" /v EnableMaintenanceLimits /t REG_DWORD /d 1 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v EndDay /t REG_DWORD /d 5 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v EndHour /t REG_DWORD /d 22 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v HighBandwidthLimit /t REG_DWORD /d 0 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v HighBandwidthType /t REG_DWORD /d 3 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v LowBandwidthLimit /t REG_DWORD /d 0 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v LowBandwidthType /t REG_DWORD /d 3 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v NormalBandwidthLimit /t REG_DWORD /d 0 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v NormalBandwidthType /t REG_DWORD /d 3 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v StartDay /t REG_DWORD /d 1 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v StartHour /t REG_DWORD /d 20 /f

Not Configured\Disabled:
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling" /v EnableMaintenanceLimits /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v EndDay /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v EndHour /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v HighBandwidthLimit /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v HighBandwidthType /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v LowBandwidthLimit /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v LowBandwidthType /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v NormalBandwidthLimit /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v NormalBandwidthType /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v StartDay /f
REG DELETE "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule" /v StartHour /f

Note: Manual editing of this registry key will not be reflected in Group Policy. If you modify this GPO from
Group Policy this registry key will be rewritten.
CMD:          

Please perform the following steps:

Please go to Pearl button (Start) and click on the Search programs and files
For more information about the change from Start to Pearl button click here
PowerShell Script
   
Description Gpedit Regedit Back CMD VBScript Up
VBScript:          

Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")

strKeyPath1 = "SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling"
strKeyPath2 = "SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule"
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath1
oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath2
strValueName1 = "EnableMaintenanceLimits"
strValueName2 = "EndDay"
strValueName3 = "EndHour"
strValueName4 = "HighBandwidthLimit"
strValueName5 = "HighBandwidthType"
strValueName6 = "LowBandwidthLimit"
strValueName7 = "LowBandwidthType"
strValueName8 = "NormalBandwidthLimit"
strValueName9 = "NormalBandwidthType"
strValueName10 = "StartDay"
strValueName11 = "StartHour"
'Enabled
dwValue1 = 1
dwValue2 = 5
dwValue3 = 22
dwValue4 = 0
dwValue5 = 3
dwValue6 = 0
dwValue7 = 3
dwValue8 = 0
dwValue9 = 3
dwValue10 = 1
dwValue11 = 20
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath1,strValueName1,dwValue1
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName2,dwValue2
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName3,dwValue3
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName4,dwValue4
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName5,dwValue5
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName6,dwValue6
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName7,dwValue7
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName8,dwValue8
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName9,dwValue9
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName10,dwValue10
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName11,dwValue11
'Not Configured/Disabled
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath1,strValueName1
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName2
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName3
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName4
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName5
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName6
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName7
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName8
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName9
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName10
'oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath2,strValueName11
PowerShell Script
   
Description Gpedit Regedit Back CMD VBScript Up
PowerShell Script :          

Enabled

$RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows"
If(Test-Path ($RegKey + "\BITS"))
{
 $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS"
 If(Test-Path ($RegKey + "\Throttling"))
 {
   $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling"
   ##Enabled
   New-ItemProperty -path $RegKey -name EnableMaintenanceLimits -value 1 -PropertyType DWord -Force
   If(Test-Path ($RegKey + "\MaintenanceSchedule"))
   {
     $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule"
     New-ItemProperty -path $RegKey -name EndDay -value 5 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name EndHour -value 22 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name HighBandwidthLimit -value 0 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name HighBandwidthType -value 3 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name LowBandwidthLimit -value 0 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name LowBandwidthType -value 3 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name NormalBandwidthLimit -value 0 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name NormalBandwidthType -value 3 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name StartDay -value 1 -PropertyType DWord -Force
     New-ItemProperty -path $RegKey -name StartHour -value 20 -PropertyType DWord -Force
   }
   else
   {
     New-Item -path $RegKey -name MaintenanceSchedule
     $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule"
     New-ItemProperty -path $RegKey -name EndDay -value 5 -PropertyType DWord
     New-ItemProperty -path $RegKey -name EndHour -value 20 -PropertyType DWord
     New-ItemProperty -path $RegKey -name HighBandwidthLimit -value 0 -PropertyType DWord
     New-ItemProperty -path $RegKey -name HighBandwidthType -value 3 -PropertyType DWord
     New-ItemProperty -path $RegKey -name LowBandwidthLimit -value 0 -PropertyType DWord
     New-ItemProperty -path $RegKey -name LowBandwidthType -value 3 -PropertyType DWord
     New-ItemProperty -path $RegKey -name NormalBandwidthLimit -value 0 -PropertyType DWord
     New-ItemProperty -path $RegKey -name NormalBandwidthType -value 3 -PropertyType DWord
     New-ItemProperty -path $RegKey -name StartDay -value 1 -PropertyType DWord
     New-ItemProperty -path $RegKey -name StartHour -value 20 -PropertyType DWord
   }
 }
 else
 {
   New-Item -path $RegKey -name Throttling
   $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling"
   ##Enabled
   New-ItemProperty -path $RegKey -name EnableMaintenanceLimits -value 1 -PropertyType DWord -Force
   New-Item -path $RegKey -name MaintenanceSchedule
   $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule"
   New-ItemProperty -path $RegKey -name EndDay -value 5 -PropertyType DWord
   New-ItemProperty -path $RegKey -name EndHour -value 22 -PropertyType DWord
   New-ItemProperty -path $RegKey -name HighBandwidthLimit -value 0 -PropertyType DWord
   New-ItemProperty -path $RegKey -name HighBandwidthType -value 3 -PropertyType DWord
   New-ItemProperty -path $RegKey -name LowBandwidthLimit -value 0 -PropertyType DWord
   New-ItemProperty -path $RegKey -name LowBandwidthType -value 3 -PropertyType DWord
   New-ItemProperty -path $RegKey -name NormalBandwidthLimit -value 0 -PropertyType DWord
   New-ItemProperty -path $RegKey -name NormalBandwidthType -value 3 -PropertyType DWord
   New-ItemProperty -path $RegKey -name StartDay -value 1 -PropertyType DWord
   New-ItemProperty -path $RegKey -name StartHour -value 20 -PropertyType DWord
 }
}
else
{
 New-Item -path $RegKey -name BITS
 $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS"
 New-Item -path $RegKey -name Throttling
 $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling"
 ##Enabled
 New-ItemProperty -path $RegKey -name EnableMaintenanceLimits -value 1 -PropertyType Dword
 New-Item -path $RegKey -name MaintenanceSchedule
 $RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\BITS\Throttling\MaintenanceSchedule"
 New-ItemProperty -path $RegKey -name EndDay -value 5 -PropertyType DWord
 New-ItemProperty -path $RegKey -name EndHour -value 22 -PropertyType DWord
 New-ItemProperty -path $RegKey -name HighBandwidthLimit -value 0 -PropertyType DWord
 New-ItemProperty -path $RegKey -name HighBandwidthType -value 3 -PropertyType DWord
 New-ItemProperty -path $RegKey -name LowBandwidthLimit -value 0 -PropertyType DWord
 New-ItemProperty -path $RegKey -name LowBandwidthType -value 3 -PropertyType DWord
 New-ItemProperty -path $RegKey -name NormalBandwidthLimit -value 0 -PropertyType DWord
 New-ItemProperty -path $RegKey -name NormalBandwidthType -value 3 -PropertyType DWord
 New-ItemProperty -path $RegKey -name StartDay -value 1 -PropertyType DWord
 New-ItemProperty -path $RegKey -name StartHour -value 20 -PropertyType DWord
}

Not Configured\Disabled

$RegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows"
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name EndDay
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name EndHour
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name HighBandwidthLimit
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name HighBandwidthType
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name LowBandwidthLimit
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name LowBandwidthType
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name NormalBandwidthLimit
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name NormalBandwidthType
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name StartDay
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule") -name StartHour
Remove-ItemProperty -Path($RegKey + "\BITS\Throttling") -name EnableMaintenanceLimits
If((Get-Item -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule")).ValueCount -eq 0 -and (Get-Item -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule")).SubKeyCount -eq 0)
{
 Remove-Item -Path($RegKey + "\BITS\Throttling\MaintenanceSchedule")
 If((Get-Item -Path($RegKey + "\BITS\Throttling")).ValueCount -eq 0 -and (Get-Item -Path($RegKey + "\BITS\Throttling")).SubKeyCount -eq 0)
 {
   Remove-Item -Path($RegKey + "\BITS\Throttling")
   If((Get-Item -Path($RegKey + "\BITS")).ValueCount -eq 0 -and (Get-Item -Path($RegKey + "\BITS")).SubKeyCount -eq 0)
   {
     Remove-Item -Path($RegKey + "\BITS")
   }
 }    
}
Up Back PowerShell Script