检测是否在Windows计算机上启用了IPv6

时间:2010-01-18 01:24:35

标签: windows powershell network-programming powershell-v2.0 ipv6

我正在编写一个PowerShell脚本,它将作为我们服务器的构建一致性测试。我需要做的一件事就是检测IPv6网络是否已被禁用。

WMI表示此信息可以在Win32_NetworkAdapterConfiguration的IPAddress属性中找到,但可以是IPv6或IPv4。这并没有给我一个我希望找到的“是/否”答案。

其他注意事项是,我不希望通过直接访问注册表来删除详细信息,也不会从ipconfig等命令的输出中删除。

鉴于我们的环境混合了2003/2008年的机器,谁能想到一种测试IPv6的方法?

干杯

7 个答案:

答案 0 :(得分:7)

您可以使用.NET方式:

Write-Host 'OS Supports IPv6: ' $( [System.Net.Sockets.Socket]::OSSupportsIPv6 )

如果可以创建IPv6数据报套接字,则该属性为true。此属性还受全局machine.config文件的影响,因此IPv6状态可能并不总是准确。

编辑:要在远程计算机上进行测试,您仍然可以使用powershell,但必须安装PowerShell 2.0并启用WinRM。

如果这两个条件属实,那么你可以使用Invoke-Command来做到这一点。

答案 1 :(得分:4)

测试IPv6通常比使用XP的是/否答案更复杂,

  1. 是否已安装“Microsoft TCP/IP version 6”网络组件。
  2. 是否有适配器具有IPv6地址 - 人们通常认为(1)暗示(2)。
  3. 适配器是否具有全局范围的IPv6,即不仅仅是链接本地fe80 ::前缀地址或环回接口,:: 1。
  4. 可以使用Microsoft演示的Powershell脚本找到(1):

    http://gallery.technet.microsoft.com/ScriptCenter/en-us/c4eb1596-7ac9-4be7-a711-b43446a3e3df

答案 2 :(得分:4)

实际上,一位同事想出了一个很好的方法 - 一点点笨重但有效。 :)

$IPV6 = $false
$arrInterfaces = (Get-WmiObject -class Win32_NetworkAdapterConfiguration -filter "ipenabled = TRUE").IPAddress

foreach ($i in $arrInterfaces) {$IPV6 = $IPV6 -or $i.contains(":")}

write-host $IPV6

答案 3 :(得分:2)

如果您想要专门检查IPv6是否已启用并正常工作,我想最好的方法是尝试连接到测试主机。这样,您不仅可以测试某些特定的软件设置,而且还会发现所有路由配置及其周围的所有内容都能正常运行。

答案 4 :(得分:1)

这是你不想做的事情,但它似乎是最好的方法,越过netsh interface提供的输出。

您可能需要look here for what you're after。你的实现会更简单,但迭代netsh interface ipv6 show interfaces结果就是你所需要的,如果找到接口,它就会在某处启用,如果找不到,那就不是。

答案 5 :(得分:1)

我没有对此进行测试,但.NET Socket类具有OSSupportsIPv6属性。所以有些事情

[System.Net.Sockets]::OSSupportsIPv6

文档说“如果操作系统和网络适配器支持IPv6协议,则为true;否则为false。”我不清楚这是否意味着该值是基于操作系统的功能或配置的内容。

我在本地帮助中查看了这些内容,因此我没有方便的MSDN链接。不应该太难找到。

答案 6 :(得分:1)

我知道这是一个旧线程,但我需要检查同样的事情。

要检查特定适配器的ipv6绑定,请使用:

 Get-NetAdapterBinding -Name 'NameOfNic' -ComponentID ms_tcpip6

这将为您提供该适配器的启用状态。

如果您想要检索该状态,可以使用:

 (Get-NetAdapterBinding -Name 'NameOfNic' -ComponentID ms_tcpip6).Enabled

希望这会有所帮助。我确实检查过这可以追溯到2012年.docs.microsoft.com没有列出2012 / Win8默认版本以下的版本