powershell - 根据一般命名约定过滤 NIC
问题描述
我正在尝试构建一个脚本来远程更改我们在远程服务器上使用的 DNS 服务器。我被卡住了。我想出了这个来列出 NIC 的别名:
$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
}
}
但问题是我只想更改一个 NIC 的 DNS,不同服务器上的 NIC 可能具有相似的名称,但并不总是完全相同。它也可能并不总是相同编号的 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,只包括我想要的一个,但我通常要么一无所获,要么得到两个 NIC。我也知道大多数人会说试试
Get-WmiObject Win32_NetworkAdapterConfiguration-Filter 'IpEnabled=True' -computername $server
或者
$nic = @(Get-WmiObject Win32_NetworkAdapterConfiguration-Filter 'IpEnabled=True' -computername $server)[0]
但问题是除了遵循一般命名约定之外,没有任何服务器网卡是标准的。因此,选择 IpEnabled=True 可能会导致我还更改用于连接到不属于我公司的网络的 NIC。与仅选择第一个 NIC 相同。非常感谢您对此问题的任何帮助。
解决方案
$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
}
}
推荐阅读
- python - 表单数据在 python 脚本中不可用
- sql-server - 如何从 SQL Server 中的不同行获取结果?
- c - 如何在 ac 源中存储 c 可执行二进制文件?
- scala - Spark:按键重新分区输出
- elasticsearch - 过滤器不适用于加权搜索
- php - 如何在亚马逊 AMI 实例上编辑 php.ini(php 版本 7.1)文件
- apache - 有没有办法创建一个可以重新启动 Apache httpd 服务器的自定义任务?
- django - Django Model-有没有办法在 wagtail 面板中选择多个页面,如 checbox?
- python - Python:创建一个接受表达式并将表达式打印为字符串及其结果的函数
- javascript - 第二次单击时按钮被禁用