我有这个可以更改 DNS 设置的 powershell 脚本。下面的脚本运行正常,但我想按 MAC 地址进行过滤,以确保更改正确的 NIC。
$计算机=“pc01”
$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter “IPEnabled=TRUE”
$DNS服务器 = “192.168.1.1”,“192.168.1.2”
foreach($NIC 在 $NICs 中) { $NICs.SetDNSServerSearchOrder($DNSServers)
所以我将过滤器改为使用 MAC 地址。但我收到以下错误。
$计算机=“pc01”
$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter “MACAddress=00:1E:55:40:70:E8”
$DNS服务器 = “192.168.1.1”,“192.168.1.2”
foreach($NIC 在 $NICs 中) { $NICs.SetDNSServerSearchOrder($DNSServers)
输出:
无效查询 + $NICs = Get-WmiObject <<<< -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter "MACAddress=00:1E:65:40:80:E4"
您不能在空值表达式上调用方法。+ $NICs.SetDNSServerSearchOrder <<<< ($DNSServers)
答案1
尝试使用 Where 子句获取 MAC 地址:$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer | Where {$_.MACAddress -eq $MAC}
对我有用
答案2
将'
要过滤的内容标记出来。使用-filter
比使用更可取,where {}
因为数据的处理方式不同。使用where {}
涉及从加载所有对象,Get-WmiObject
然后过滤它们。使用-filter
将立即进行过滤,因此最终需要处理的数据更少,运行脚本的时间也更少。
$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter "MACAddress='00:1E:55:40:70:E8'"