编辑 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"
}
我在几个不同的可靠技术博客和讨论中读到,以下代码应该允许我使用使用特定 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"
}