本文介绍了在纯IPv6计算机上使用PowerShell设置Win32_NetworkAdapterConfigurationSetDNSServerSearchOrder&Quot;方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

SetDNSServerSearchOrder返回70,来自MSDN的信息对于SetDNSServerSearchOrder是"无效的IP地址"

当我尝试使用IPv4地址时,它成功添加了DNS服务器。但是,当我尝试提供IPv6地址而不是IPv4地址时,它不起作用。

  1. 为什么无法设置IPv6地址?
  2. 在IPv6计算机中实现此目标的替代方案是什么?

下面是我尝试过的代码片段。我还尝试将IPAddress和字符串数据类型作为SetDNSServerSearchOrder的输入。

PS C:UsersAdministrator> $NICs = Get-WmiObject Win32_NetworkAdapterConfiguration | Where {$_.IPEnabled -eq "TRUE" -and
 ($_.IPAddress -contains "1111:1111:1111:1111:1111:1111:1111:1114")}
PS C:UsersAdministrator> [System.Net.IPAddress]$IP="1111:1111:1111:1111:1111:1111:1111:1112"
PS C:UsersAdministrator> $IP


Address           :
AddressFamily     : InterNetworkV6
ScopeId           : 0
IsIPv6Multicast   : False
IsIPv6LinkLocal   : False
IsIPv6SiteLocal   : False
IPAddressToString : 1111:1111:1111:1111:1111:1111:1111:1112



PS C:UsersAdministrator> $NICs.SetDNSServerSearchOrder($IP)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 70



PS C:UsersAdministrator> [string]$IP="1111:1111:1111:1111:1111:1111:1111:1112"
PS C:UsersAdministrator> $NICs.SetDNSServerSearchOrder($IP)


__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
ReturnValue      : 70



PS C:UsersAdministrator> $IP
1111:1111:1111:1111:1111:1111:1111:1112
PS C:UsersAdministrator> $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:UsersAdministrator>
下面是运行这些命令后的屏幕截图。

我也在谷歌上搜索过,也找不到解决方案。:-(

操作系统版本:Windows Server 2008 R2

PowerShell版本:PowerShell 2.0

解决方案应是唯一的,以便我可以同时用于IPv4和IPv6系统。

如果有人能在这方面提供帮助就太好了。

推荐答案

  1. 不确定-在Win2012中,您可以通过使用专用cmdlet进行网络管理来避开整个问题

    Set-DnsClientServerAddress -InterfaceIndex $($Nics.InterfaceIndex) -ServerAddresses $IP
    
  2. 使用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)
    }

这篇关于在纯IPv6计算机上使用PowerShell设置Win32_NetworkAdapterConfigurationSetDNSServerSearchOrder&Quot;方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 03:59