Rename Hyper-V NICs

Version 1

    UCS Power Scripting Submission Form

     

    UCS Communities Login ID: tcerling

    Twitter handle (optional): <Name>

    Have you read the Official Rules of the Contest and do you accept the terms and conditions     Yes  [ X ]    No  [   ]

    Are you a Cisco employee                                                                                                                          Yes  [ X ]    No  [   ]

    Does the script run on an emulator -                                                                                                          Yes [ X ]    No  [   ]

              If yes which version? _______________

     

     

    Include your script here:

     

    <#

    Rename-UcsHyperVNICs.ps1

    Script to rename the NICs on the host to match the names on the Service Profile

    NOTE: There are some variables that need to be changed to reflect your environment.
         - change the IP address for accessing UCSM

           This script will work running between two systems that are in the same domain or two
           systems that are in workgroups.  It will not work across domain-workgroup.

           The following Windows firewall rules must be enabled on the target machine.
             COM+ Network Access (DCOM-IN)
             Windows Management Instrumentation (WMI-IN)
    #>

    # Import required modules

    if ((Get-Module |where {$_.Name -ilike "CiscoUcsPS"}).Name -ine "CiscoUcsPS")
    {
    Write-Host "Loading Module: Cisco UCS PowerTool Module"
    Import-Module CiscoUcsPs
    }

    $trash = set-ucspowertoolconfiguration -supportmultipledefaultucs $false

    ###  Variables to be tailored to customer environment ###

    $UcsmAddress = "192.168.10.100"

    # Connect to UCSM
    Write-Host -ForegroundColor DarkYellow "`nEnter credentials for UCS Manager`n"
    $ucsCreds = Get-Credential
    $UCSMHandle = Connect-Ucs $UcsmAddress $ucsCreds

    # Get Name of server to work on

    Write-Host "Enter server on which to rename default NIC names"
    Write-Host "The name of the server and the name of the UCS Service Profile must be the same"
    $Srvr = Read-Host "`nNOTE: Case must be EXACTLY the same as the UCS Service Profile"
    $Org = Read-Host "`nEnter Sub-Organization name of Service Profile, or 'root'"
    If ($org.Length -eq 0) {$org = "root"}
    $OrgLevel = Get-UcsOrg -Name $Org
    $SrvrProfile = $OrgLevel.DN + "/" + $Srvr

    # Retrieve table of NICs from the UCS Profile

    $ucsAdapters = Get-UcsVnic -ServiceProfile $SrvrProfile
    $remAdapters = Invoke-Command -ComputerName $srvr {Get-NetAdapter}

    ForEach ($ucsA in $ucsAdapters) {
        $ucsMac = $ucsA.Addr -replace ":", "-"
        ForEach ($remA in $remAdapters) {
            If ($ucsMac -eq $($remA.MacAddress))
            {
                If ($ucsA.Name -ne $remA.name)
                {
                    $tmp = $($remA.ifDesc).Contains("Hyper-V Virtual Ethernet")
                    If ($tmp -eq $false)
                    {
                        $old = $remA.Name; $new = $ucsA.Name
                        Write-Host "Changing NIC $old to be named $new - MAC $($remA.MacAddress)"
                        Invoke-Command -ComputerName $srvr {param($old, $new)Rename-NetAdapter -Name $old -NewName $new} -args $old,$new
                        break
                    }
                }
            }
        }
    }


    Disconnect-Ucs