编辑 Windows DNS 时出错

Error editing Windows DNS

我在几个不同的可靠技术博客和讨论中读到,以下代码应该允许我使用使用特定 DNS 服务器的静态 IP 定位我的 NIC,并更新它们正在使用的服务器。

$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled='FALSE'" |
        Select-Object -Property DNSServerSearchOrder |
        Where {
            $_.DNSServerSearchOrder -contains "OldDNS1" -or
            $_.DNSServerSearchOrder -contains "OldDNS2"
        }

foreach ($NIC in $NICs) {
    $NIC.SetDNSServerSearchOrder("NewDNS1","NewDNS2")
}

但是,当我 运行 该代码时,出现以下错误:

Method invocation failed because [Selected.System.Management.ManagementObject]
doesn't contain a method named 'SetDNSServerSearchOrder'. 
At line:2 char:33
+ $NIC.SetDNSServerSearchOrder <<<< ("NewDNS1","NewDNS2")
    + CategoryInfo          : InvalidOperation: (SetDNSServerSearchOrder:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

我一直无法找出或正确找到解决方案,而且我不确定自己遗漏了什么。有人有什么建议吗?

编辑:根据@FoxDeploy 的建议,我又遇到了另一个错误:

Cannot find an overload for "SetDNSServerSearchOrder" and the argument count: "2".
At line:2 char:33
+ $NIC.SetDNSServerSearchOrder <<<< ("172.16.1.50","172.16.210.53")
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

我不得不改变:

$NIC.SetDNSServerSearchOrder("NewDNS1","NewDNS2")

现在是:

$NIC.SetDNSServerSearchOrder($("NewDNS1","NewDNS2"))

因为select声明。

使用 Select-Object 更改对象之前的配置,并将其变为 System.Management.ManagementObject,这基本上只是一种 PowerShell 自定义对象。

如果删除 Select-Object 语句,这将起作用。

$NICs = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled='FALSE'" |
        Where {
            $_.DNSServerSearchOrder -contains "OldDNS1" -or
            $_.DNSServerSearchOrder -contains "OldDNS2"
        }