SetDNSServerSearchOrder返回70,来自MSDN的信息是SetDNSServerSearchOrder的“无效IP地址”
当我尝试使用IPv4地址时,它成功添加了DNS服务器。但是,当我尝试提供IPv6地址而不是IPv4地址时,它不起作用。
下面是我尝试过的代码片段。还尝试将IPAddress和字符串数据类型作为SetDNSServerSearchOrder的输入。
PS C:\Users\Administrator> $NICs = Get-WmiObject Win32_NetworkAdapterConfiguration | Where {$_.IPEnabled -eq "TRUE" -and
($_.IPAddress -contains "1111:1111:1111:1111:1111:1111:1111:1114")}
PS C:\Users\Administrator> [System.Net.IPAddress]$IP="1111:1111:1111:1111:1111:1111:1111:1112"
PS C:\Users\Administrator> $IP
Address :
AddressFamily : InterNetworkV6
ScopeId : 0
IsIPv6Multicast : False
IsIPv6LinkLocal : False
IsIPv6SiteLocal : False
IPAddressToString : 1111:1111:1111:1111:1111:1111:1111:1112
PS C:\Users\Administrator> $NICs.SetDNSServerSearchOrder($IP)
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 70
PS C:\Users\Administrator> [string]$IP="1111:1111:1111:1111:1111:1111:1111:1112"
PS C:\Users\Administrator> $NICs.SetDNSServerSearchOrder($IP)
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 1
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
ReturnValue : 70
PS C:\Users\Administrator> $IP
1111:1111:1111:1111:1111:1111:1111:1112
PS C:\Users\Administrator> $NICs
DHCPEnabled : True
IPAddress : {fe80::24b7:d14e:fd15:bd2b, 1111:1111:1111:1111:1111:1111:1111:1114}
DefaultIPGateway :
DNSDomain :
ServiceName : e1cexpress
Description : Intel(R) 82579LM Gigabit Network Connection
Index : 10
PS C:\Users\Administrator>
下面是运行这些命令后的屏幕截图。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9xaVRNSy5naWYifQ==” alt =“在此处输入图像描述”>
也已在Google中搜索,找不到解决方案。 :-(
操作系统版本:Windows Server 2008 R2
Powershell版本:Powershell 2.0
解决方案应该是唯一的,这样我就可以同时用于IPv4和IPv6系统。
如果有人可以在这方面提供帮助,那就太好了。
不确定-在Win2012中,您通过使用专用cmdlet进行网络管理来回避整个问题
Set-DnsClientServerAddress -InterfaceIndex $($Nics.InterfaceIndex) -ServerAddresses $IP
使用netsh
$NICs = Get-WmiObject Win32_NetworkAdapterConfiguration | Where {$_.IPEnabled -eq "TRUE" -and
($_.IPAddress -contains "1111:1111:1111:1111:1111:1111:1111:1114")}
$IP="1111:1111:1111:1111:1111:1111:1111:1112"
netsh interface IPv6 set dnsservers name=$($Nics.InterfaceIndex) static $IP primary
而且这也可以适应ipv4:
if($IP.contains(":")){
netsh interface IPv6 set dnsservers name=$($Nics.InterfaceIndex) static $IP primary
}
elseif($IP.contains(".")){
netsh interface IPv4 set dnsservers name=$($Nics.InterfaceIndex) static $IP primary
}
else{
Write-Host ("Invalid IP:" + $IP)
}
我有类似情况,我通过WMI进行设置
...| %{$_.SetDNSServerSearchOrder("10.10.10.10, 10.10.10.11") }
只是替换
$dns = "10.10.10.10", "10.10.10.11"
...| %{$_.SetDNSServerSearchOrder($DNS) }