How to rename a NIC


Q: Is there a simple way to rename a NIC, especially inside a Hyper-V VM?

A: You can change the name of any Windows NIC using PowerShell – whether the NIC is in a physical host or a Hyper-V VM.

NICS and NIC names

One thing that can quickly become confusing when using Hyper-V with multiple VMs and VM Switches is how fast the network adapters seem to proliferate. You start with a few wired Ethernet Adapters on the host. Then you install Hyper-V and create a VM farm with loads of virtual NICs. Before you know it, you have a dozen adapters inside the VM host and an unclear set of adapters in the VM.

To discover the NICs in a host or a VM, you use the Get-NetAdapter cmdlet. Which looks like this inside a Hyper-V VM:

PS> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet                  Microsoft Hyper-V Network Adapter            22 Up           00-15-5D-01-2A-91        10 Gbps
Ethernet 2                Microsoft Hyper-V Network Adapter #2         14 Up           00-15-5D-01-2A-92        10 Gbps
Ethernet 3                Microsoft Hyper-V Network Adapter #3         15 Up           00-15-5D-01-2A-92        10 Gbps
Ethernet 4                Microsoft Hyper-V Network Adapter #4         16 Up           00-15-5D-01-2A-92        10 Gbps
Local Area Connection     TAP-Windows Adapter V9                       12 Disconnected 00-FF-B6-68-E1-5D         1 Gbps

Once you add a few NICs to a VM, each connected to a separate switch, telling them apart can be challenging. To help you with subsequent maintenance, it can be good to rename the adapter and change the description. Renaming a VM’s NICs is a good habit to get into – and is straightforward to achieve. Before renaming anything, ensure you determine the purpose for each NIC in your VM. Once you work out what use each NIC plays in your VM farm, you can use the Rename-NetAdapter cmdlet to rename the NIC.

There are two ways you could use Rename-NetAdapter to rename one of our NICs, like this:

# Using a 'Get-Rename' pattern
Get-NetAdapter -InterfaceIndex 22 | Rename-NetAdapter -NewName 'Reskit Management'
# Just Using Rename-NetAdapter
Rename-NetAdapter  -InterfaceIndex 22 -NewName 'Reskit Management'

I rarely, if ever, rename a NIC using a production script since it is usually a one-off operation. For that reason, I prefer to use the first method. I can first use Get-NetAdapter on its own to ensure I’m getting the right adapter. Then, I can hit Up-Arrow, and pipe the previous command to Rename-NetAdapter and specify a new name for the NIC.

Admin rights required

There is just one small snag with using Rename-NetAdapter – you have to run it in an elevated console. If, as I often do, forget to run PowerShell as an administrator, you would see the following when attempting to rename the NIC:

PS> Get-NetAdapter -InterfaceIndex 22 | Rename-NetAdapter -NewName 'Sales iSCSI VLAN'
Rename-NetAdapter: Access is denied.

Although it might have been nice to tell you to run the command in an elevated PowerShell console, the error message should be clear enough. And, interestingly, this fact is not currently mentioned in the help text.

Assuming that you are an administrator with the rights to change a NIC’s name, you can open a new elevated PowerShell session and try the command again. If you are using PSReadLine, when you start up the new console (as an Administrator), the command should be in PSReadLine’s command cache. And that means, once the new console is up and available, you can access that earlier command by hitting up-arrow and then hitting return.

When you do, you see this:

PS> Get-NetAdapter -InterfaceIndex 16 | Rename-NetAdapter -NewName 'Sales iSCSI VLAN'
PS> Get-NetAdapter -InterfaceIndex 16

Name                InterfaceDescription                 ifIndex Status   MacAddress          LinkSpeed
----                --------------------                 ------- ------   ----------          ---------
Sales iSCSI VLAN    Microsoft Hyper-V Network Adapter         16 Up       00-15-5D-01-2A-91     10 Gbps

In this example: Rename-NetAdapter did change the name of the adapter but produced no console output. You use Get-NetAdapter to view the new name.

There are other ways

As ever with PowerShell, there are other ways you could change the name of a NIC. One more old-fashioned way would be to use the netsh.exe program. And then there is WMI – you can use the Set-CimInstance to perform the name change. And I look forward to comments suggesting other ways to change a NIC’s name.


It is easy to change a network adapter’s name. Unfortunately, the Rename-NetAdapter does not allow you to change the interface description. You need to run the Rename-NetAdapter in an elevated console – if you don’t, you get an Access Denied error.

Tip of the Hat

I based this article on one written for the earlier Scripting Guys blog Renaming Network Adapters by Using PowerShell. The author of that article was Ed Wilson.