A recent issue with Hyper-V networking on a server brought to memory an older application that lives for a single purpose: to alter the bindings of network cards in a Hyper-V environment. This month our topic of discussion will be the command line utility NVSPbind, and a modern alternative that uses PowerShell. As always, exercise caution with any application with which you are unfamiliar.
In this situation, the issue arose that the Hyper-V installation on a server was corrupted. A removal and re-installation of Hyper-V resolved most of the problems, but would not allow a new VMSwitch to be created using a specific NIC. The error indicated that the NIC could not be used for the VMSwitch because it was already bound to another virtual network.
This would seem to imply that the NIC was already in use by another VMSwitch, but a quick check using PowerShell showed that there were no configured virtual switches.
This is where NVSPbind comes into use. It’s specifically geared towards altering the bindings that Hyper-V uses in conjunction with network cards. As this utility originated in 2010, it uses the command line instead of PowerShell. Despite its age, I’ve successfully tested it on Server 2012 R2 all the up way up through Server 2022.
Running it will provide a list of all network devices and their associated bindings, as in the example screenshot below. This also shows that the Microsoft Virtual Network Switch Protocol (vms_pp) is enabled on the NIC, even though there is no virtual switch in use.
To clear the issue, run NVSPbind with the /u switch, which unbinds the switch protocol from the named NIC.
When we check to see the status of vms_pp, it now shows as disabled.
Now we can create our virtual switch using PowerShell.
So this seems like a perfect utility for this rare issue. And it would be if Microsoft still made it available for download. They have a current document regarding this utility here, but sadly the embedded links are all dead. That said, this utility can still be found if you look for it, but I also have an alternative.
PowerShell Alternative to NVSPBind
Let’s make use of PowerShell to remove the protocol binding that is causing this problem. We will start by viewing the existing adapters and determine which one has vms_pp enabled.
Then we will disable the vms_pp protocol and double check our NIC settings to ensure that the protocol is disabled.
This was a long way to get to a relatively easy to use PowerShell command that performs the same task as a difficult-to-obtain command line application. However, if you can find it, the NVSPBind utility does have other uses (e.g. specific protocol removal, binding reordering, binding repair, etc.) that makes it worthwhile to have on hand. Here’s the only download source I could find: https://github.com/taylormonacelli/nvspbind_network_card_config
Have any questions about an alternative to the NVSPBind utility? Please reach out to our experts at any time!
This publication contains general information only and Sikich is not, by means of this publication, rendering accounting, business, financial, investment, legal, tax, or any other professional advice or services. This publication is not a substitute for such professional advice or services, nor should you use it as a basis for any decision, action or omission that may affect you or your business. Before making any decision, taking any action or omitting an action that may affect you or your business, you should consult a qualified professional advisor. In addition, this publication may contain certain content generated by an artificial intelligence (AI) language model. You acknowledge that Sikich shall not be responsible for any loss sustained by you or any person who relies on this publication.