Sometimes over slow connections we switch to an older version of the protocol. I'd like to be able to check and see which version is being used, I only know how to set the version ala:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi 
sc.exe config mrxsmb20 start= disabled

How does one check the version of the protocol being used without using Powershell?

  • Why would you switch to an older version over slow connections? – Jim B Apr 15 '16 at 2:19
  • @JimB Because it doesn't work if you don't. The Microsoft KB says to do exactly that. – leeand00 Apr 15 '16 at 2:20
  • Can you post that KB? Autotuming can cause performance problems but SMB peformance usually rises as the version gets higher. – Jim B Apr 15 '16 at 2:23
  • @JimB I think it's this one: support.microsoft.com/en-us/kb/2696547 – leeand00 Apr 15 '16 at 2:26
  • That link tells you how to disable the various protocols but also explain what you lose - IE disabling SMB2 looses the better network performamce,and high latency performance. In fact that one says (correctly) ONLY do this as a temporary troubleshooting measure. – Jim B Apr 15 '16 at 14:30

If you have Windows 8.1 or 2012, you can use the PowerShell cmdlet Get-SmbConnection for that.

To interpret the answer (copied and pasted from here):

  • SMB 1 - Windows 2000
  • SMB 2 - Windows Server 2008 and WIndows Vista SP1
  • SMB 2.1 - Windows Server 2008 R2 and Windows 7
  • SMB 3.0 - Windows Server 2012 and Windows 8

Sample output:

ServerName   ShareName   UserName      Credential                 Dialect   NumOpens
----------   ---------   --------      ----------                 -------   --------
SERVER2      f$          DOMAIN\USER   otherdomain\otheruser...   2.02      1
SERVER1      backups     DOMAIN\USER   DOMAIN.LOCAL\USER          3.02      2
SERVER3      users       DOMAIN\USER   DOMAIN.LOCAL\USER          2.02      1

If you don't, perhaps this related question will help:

  • Do I have to install that? – leeand00 Apr 14 '16 at 22:51
  • Some of my users are remote it might not be practical... – leeand00 Apr 14 '16 at 22:51
  • It depends on your version of PowerShell, I imagine; it's built into Windows 8 and above, at least. – Katherine Villyard Apr 14 '16 at 22:53
  • Oh I have Windows 7... :p – leeand00 Apr 14 '16 at 22:54
  • 1
    Get-SmbConnection isn't entirely helpful, as it's listing the current SMB connections and what Dialect (SMB version) they have negotiated between the 2 parties. It isn't showing the client or servers SMB capabilities. – Seymour Harding SimRacerSeymou Jun 28 '17 at 14:26

As seen here:

sc query mrxsmb10
sc query mrxsmb20

💡 For some reason, this command only works in plain old "cmd", not in PowerShell!

  • 2
    That is because sc in Powershell is an Alias for Set-Content. To run this in Powershell, use sc.exe query [...] – Cory Knutson Jul 18 '17 at 16:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.