使用Powershell错误更改DNS

我有这个更改DNS设置的PowerShell脚本。 下面的脚本工作正常,但我想过滤MAC地址,以确保我正在更改正确的网卡。


$ computer =“pc01”

$ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $ computer -Filter“IPEnabled = TRUE”

$ DNSServers =“192.168.1.1”,“192.168.1.2”

($ NIC中的$ NIC){$ NICs.SetDNSServerSearchOrder($ DNSServers)


所以我改变了filter使用MAC地址。 但是我得到以下错误。


$ computer =“pc01”

$ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $ computer -Filter“MACAddress = 00:1E:55:40:70:E8”

$ DNSServers =“192.168.1.1”,“192.168.1.2”

($ NIC中的$ NIC){$ NICs.SetDNSServerSearchOrder($ DNSServers)

输出:

无效的查询+ $ NICs = Get-WmiObject <<<< – 类Win32_NetworkAdapterConfiguration -Computer $ computer -Filter“MACAddress = 00:1E:65:40:80:E4”

您无法在空值expression式上调用方法。 + $ NICs.SetDNSServerSearchOrder <<<<($ DNSServers)

为MAC地址尝试一个Where子句:$ NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $ computer | 其中{$ _。MACAddress -eq $ MAC}

为我工作

'标记放在被过滤的东西上。 由于数据的处理方式,使用-filter优于使用where {} 。 使用where {}涉及从Get-WmiObject加载所有对象,然后对其进行过滤。 使用-filter会马上进行过滤,所以最终的结果是通过更less的数据来运行脚本。

 $NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Computer $computer -Filter "MACAddress='00:1E:55:40:70:E8'"