Существует ли простой сценарий powershell для переименования NetConnectionID на основе PnPDeviceID? Если PnPDeviceID - «PCI \ VEN», тогда переименуйте NIC в «Интернет» - PullRequest
0 голосов
/ 10 ноября 2019

Мне нужно переименовать карты NIC на основе многих непротиворечивых PnPDeviceID.

Пока что приведенный ниже код был наиболее близким, который я смог получить. Но он отображает только NetConnectionID и PnPDeviceID, но не может использовать его для манипулирования NetConnectionID.

$interfaces = Get-WmiObject Win32_NetworkAdapter
$interfaces | foreach {
$name = $_ | Select-Object -ExpandProperty NetConnectionID
if ($name) {
$id = $_.GetRelated("Win32_PnPEntity") | Select-Object -ExpandProperty DeviceID
Write-Output "$name - $id"
}
}

Надеюсь, это может быть простой скрипт, который успешно переименует карту NIC.

1 Ответ

0 голосов
/ 10 ноября 2019

Я бы использовал Get-NetAdapter и Rename-NetAdapter, а не обменивался с Get-WmiObject.

https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadapter?view=win10-ps

https://docs.microsoft.com/en-us/powershell/module/netadapter/rename-netadapter?view=win10-ps

The Get-NetAdapter cmdlet gets the basic network adapter properties. By default only visible adapters are returned.

The Rename-NetAdapter cmdlet renames a network adapter. Only the name, or interface alias can be changed.

#Create your array of adapters
$netAdapters = Get-NetAdapter 

#loop through all adapters
foreach($adapter in $netAdapters)
{

    #Set the requirements that need to be met in order to change the adapter name
    $PnPIDs2Change = "PCI\VEN_8086&DEV_1539&SUBSYS_15391849&REV_03\7085C2FFFFBA0CFC00","PCI\VEN_8086&DEV_1539&SUBSYS_15391849&REV_03\7085C2FFFFBA0CFC01","PCI\VEN_8086&DEV_1539&SUBSYS_15391849&REV_03\7085C2FFFFBA0CFC02","PCI\VEN_8086&DEV_1539&SUBSYS_15391849&REV_03\7085C2FFFFBA0CFC03","PCI\VEN_8086&DEV_1539&SUBSYS_15391849&REV_03\7085C2FFFFBA0CFC04"

    #Since you have "many consistent PnPDeviceID's" you need to loop through each of those PnPIDs and check them against the adapter in question
    foreach($ID in $PnPIDs2Change)
    {

        #If adapter meets the requirements, change the name 
        if($adapter.PnPDeviceID -eq "$ID")
        {
            #Take note of the old name and ID
            $oldName = $adapter.Name
            $adapterPnPID = $adapter.PnPDeviceID
            #Uncomment the 2 lines below in order to actually rename the adapter(set $newName to what you actually want it set to)
            #$newName = "Public - VLAN 1"
            #Rename-NetAdapter -Name $adapter.Name -NewName $newName
            Write-Output "$oldName - $adapterPnPID"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...