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