NIC фильтра для общего соглашения об именах - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь создать скрипт для удаленной смены DNS-серверов, которые мы используем на наших удаленных серверах. Я застрял, хотя. Я придумал это, чтобы вывести псевдоним сетевых карт:

$server = "servername"
$interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server
$interfaces | ForEach{
    $aliasname = $_ | ForEach-Object { $_.NetConnectionID }
    $name = $_.GetRelated("Win32_PnPEntity") | Select-Object -ExpandProperty Name
    foreach($name in $aliasname){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server | select $name, Description, IPAddress, DNSServerSearchOrder |  Format-Table -AutoSize
    }
} 

но проблема в том, что я хочу изменить DNS только одной сетевой карты, и у сетевых карт на разных серверах может быть похожее имя, но не всегда точно такое же. Также не всегда может быть один и тот же номер NIC. Я хотел использовать что-то, чтобы исключить неправильный сетевой адаптер, поэтому я попробовал что-то вроде

    foreach($name in $aliasname | Where-Object -Property $name -contains "WhatIAmLookingFor"){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server | select $name, Description, IPAddress, DNSServerSearchOrder |  Format-Table -AutoSize
    }
}

но он все равно возвращает оба сетевых адаптера. Я попробовал несколько способов сделать так, чтобы исключить NIC, который я не хочу менять, и включить только тот, который я хочу, но обычно я либо ничего не возвращаю, либо получаю оба NIC. Я также знаю, что большинство скажет, чтобы попробовать

Get-WmiObject Win32_NetworkAdapterConfiguration-Filter 'IpEnabled=True' -computername $server

или

$nic = @(Get-WmiObject Win32_NetworkAdapterConfiguration-Filter 'IpEnabled=True' -computername $server)[0]

но проблема в том, что ни один из серверов не является стандартным, кроме как в соответствии с общим соглашением об именах. Поэтому выбор IpEnabled = True может также привести к изменению сетевого адаптера, используемого для подключения к сети, которая не принадлежит моей компании. То же самое, только с выбором первого NIC. Любая помощь в этом вопросе очень ценится.

1 Ответ

0 голосов
/ 22 июня 2019
$server = "servername"
$excludedNic= "nic to exclude"
$interfaces = Get-WmiObject Win32_NetworkAdapter -ComputerName $server -Filter "NetConnectionID!='$($excludedNic)'"
foreach($interface in $interfaces){
    if($null -ne $interface.NetConnectionID){
        Get-WmiObject Win32_NetworkAdapterConfiguration -computername $server -Filter "Description='$($interface.name)' " |Select-Object @{Name='NicName'; Expression={$interface.NetConnectionID}},  Description, IPAddress, DNSServerSearchOrder
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...