2

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

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

其他需要注意的是,我不希望通过直接访问注册表来获取详细信息,也不希望从 ipconfig 等命令的输出中获取详细信息。

鉴于我们的环境混合了 2003/2008 机器,任何人都可以想出一种测试 IPv6 的方法吗?

干杯

4

7 回答 7

7

您可以使用 .NET 方式:

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

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

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

如果这两个条件为真,那么您可能可以使用Invoke-Command来执行此操作。

于 2010-01-18T02:44:52.277 回答
4

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

  1. 是否安装了“ Microsoft TCP/IP 版本 6 ”网络组件。
  2. 是否有适配器具有 IPv6 地址 - 通常会假设 (1) 意味着 (2)。
  3. 适配器是否具有全局范围的 IPv6,即不仅仅是链接本地 fe80:: 前缀地址或环回接口,::1。

可以通过 Microsoft 演示的 Powershell 脚本找到 (1):

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

于 2010-02-08T09:51:26.700 回答
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
于 2010-02-16T03:33:32.060 回答
2

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

于 2010-01-18T02:47:40.537 回答
1

这是您不想做的,但它似乎是最好的方法,检查netsh 接口提供的输出。

你可能想在这里寻找你想要的东西。你的实现会更简单,但是你只需要迭代netsh interface ipv6 show interfaces结果,如果你找到接口,它在某处启用,如果你没有找到,它不是。

于 2010-01-18T01:46:49.097 回答
1

我没有对此进行测试,但 .NET Socket 类具有 OSSupportsIPv6 属性。所以大致上

[System.Net.Sockets]::OSSupportsIPv6

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

我在本地帮助中查找了此内容,因此手边没有 MSDN 链接。应该不难找。

于 2010-01-18T02:41:31.903 回答
1

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

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

 Get-NetAdapterBinding -Name 'NameOfNic' -ComponentID ms_tcpip6

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

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

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

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

于 2018-05-15T22:00:15.750 回答