使用 Powershell 更改 DNS 错误

使用 Powershell 更改 DNS 错误

我有这个可以更改 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'"

相关内容