How to Configure SMB Bandwidth Limits in Windows 11 Using PowerShell

In high-capacity local area networks, high-speed file sharing via Server Message Block (SMB 3.1.1) can easily consume entire 1GbE or 10GbE network links during massive file copies, system backup tasks, or virtual machine disk migrations. When unrestricted SMB transfers saturate network interfaces, latency spikes, causing VoIP dropouts, remote desktop lag, and web browsing timeouts across the client machine. To prevent SMB traffic from monopolising network throughput, Windows 11 includes the SMB Bandwidth Limit feature, configurable via the SmbShare PowerShell module.

Understanding SMB Bandwidth Categories

The SMB Bandwidth Limit architecture categorises network file transfers into three distinct traffic groups:

  • Default: Covers standard user file copies traversing SMB shares (such as copying files via Windows Explorer, robocopy, or mapped drives).
  • LiveMigration: Throttles Hyper-V virtual machine live migration data streams between virtualization hosts.
  • VirtualMachine: Regulates Hyper-V virtual machine shared virtual hard disk (VHDX over SMB) storage traffic.

By defining explicit throughput limits per category, you can ensure that heavy file synchronization tasks cannot overwhelm available interface bandwidth.

Installing the SMB Bandwidth Limit Optional Feature

The cmdlets governing SMB bandwidth limiting require the underlying Windows feature to be installed. Open PowerShell as an Administrator and check the feature status:

Get-WindowsOptionalFeature -Online -FeatureName "FS-SMBBW"

If the state is Disabled, install the feature:

Enable-WindowsOptionalFeature -Online -FeatureName "FS-SMBBW" -NoRestart

Once enabled, the Get-SmbBandwidthLimit, Set-SmbBandwidthLimit, and Remove-SmbBandwidthLimit cmdlets become functional.

Querying Current SMB Bandwidth Limits

To inspect active bandwidth caps across all traffic categories on your Windows 11 system:

Get-SmbBandwidthLimit

If no limits have been configured previously, the command returns empty. When limits exist, the output reports:

Category  BytesPerSecond
--------  --------------
Default   52428800

Configuring an SMB File Transfer Bandwidth Cap

To restrict standard SMB file transfers (the Default category) so that file sharing does not exceed a designated throughput limit, use Set-SmbBandwidthLimit:

For example, to cap file transfer speeds to 50 Megabytes per second (50 MB/s = 52,428,800 bytes per second):

Set-SmbBandwidthLimit -Category Default -BytesPerSecond 50MB

PowerShell natively converts size notation (KB, MB, GB) directly into bytes.

If you are operating Hyper-V virtual machines and need to ensure VM storage synchronization does not consume more than 200 MB/s:

Set-SmbBandwidthLimit -Category VirtualMachine -BytesPerSecond 200MB

The changes take effect immediately on active SMB connections without requiring a restart of the Server service or operating system.

Testing and Validating Bandwidth Enforcement

To verify that the bandwidth restriction is functioning:

  1. Open Task Manager and switch to the Performance tab.
  2. Select your active Ethernet or Wi-Fi network adapter.
  3. Initiate a large multi-gigabyte file transfer across an SMB share.
  4. Observe the throughput graph. The transfer speed plateaus cleanly at the specified limit (e.g., ~400 Mbps for a 50 MB/s cap), leaving ample bandwidth for other interactive traffic.

Removing SMB Bandwidth Limits

When high-speed unrestricted transfer performance is required again, remove the category limit:

Remove-SmbBandwidthLimit -Category Default

To remove all configured bandwidth limits across every category simultaneously:

Get-SmbBandwidthLimit | Remove-SmbBandwidthLimit -Confirm:$false

To confirm that all throughput limits have been cleared:

Get-SmbBandwidthLimit

SMB connections instantly revert to line-rate wire speed.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.