Определить, включен ли IPv6 на компьютерах с Windows - PullRequest
2 голосов
/ 18 января 2010

Я пишу сценарий powershell, который будет служить тестом на соответствие сборки для наших серверов. Одна из вещей, которые мне нужно сделать, это определить, отключена ли сеть IPv6.

WMI указывает, что эта информация может быть найдена в свойстве IPAddress Win32_NetworkAdapterConfiguration, но может быть как IPv6, так и IPv4. Это не дает мне ответа «да / нет», который я надеюсь найти.

Другими предостережениями является то, что я бы предпочел не анализировать детали, обращаясь непосредственно к реестру, и не удалять результаты команды, такой как ipconfig.

Учитывая, что в нашей среде множество компьютеров 2003/2008 гг., Может кто-нибудь придумать способ протестировать IPv6?

Приветствия

Ответы [ 7 ]

7 голосов
/ 18 января 2010

Вы можете использовать .NET способ:

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

Свойство будет иметь значение true, если возможно создать сокет дейтаграммы IPv6. На это свойство также влияет глобальный файл machine.config, поэтому статус IPv6 не всегда может быть точным.

Редактировать: Чтобы проверить это на удаленном компьютере, вы все равно можете использовать powershell, но на нем должен быть установлен powershell 2.0 и включен WinRM.

Если эти два условия выполняются, то, вероятно, вы можете использовать Invoke-Command для этого.

4 голосов
/ 16 февраля 2010

На самом деле, коллега придумал хороший способ сделать это - немного неуклюже, но работает. :)

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

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

write-host $IPV6
4 голосов
/ 08 февраля 2010

Тестирование на IPv6 обычно будет более сложным, чем ответ «да / нет», если у вас есть XP,

  1. Установлен ли сетевой компонент " Microsoft TCP / IP версии 6 ".
  2. Есть ли у адаптера адрес IPv6 - обычно можно предположить, что (1) подразумевает (2).
  3. Имеется ли у адаптера глобальный IPv6, то есть не просто локальная ссылкаfe80 :: адрес с префиксом или интерфейс обратной связи, :: 1.

Предположительно (1) можно найти с помощью скрипта Powershell, как продемонстрировано Microsoft:

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

2 голосов
/ 18 января 2010

Если вы хотите специально проверить, что IPv6 включен и работает, я бы сказал, что лучшим способом было бы попытаться подключиться к тестовому хосту. Таким образом, вы не просто протестируете какую-то конкретную настройку программного обеспечения, но и узнаете, что вся конфигурация маршрутизации и все вокруг нее работает как надо.

1 голос
/ 16 мая 2018

Я знаю, что это старая ветка, но мне нужно было проверить то же самое.

Чтобы проверить привязку ipv6 для определенного адаптера, используйте:

 Get-NetAdapterBinding -Name 'NameOfNic' -ComponentID ms_tcpip6

Это даст вам включенное состояние для этого адаптера.

Если вы хотите просто получить это состояние, вы можете использовать:

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

Надеюсь, это поможет. Я проверил, что это работает еще в 2012 году. Docs.microsoft.com не перечислял версии ниже стандартных для 2012 / Win8

1 голос
/ 18 января 2010

Я не проверял это, но класс .NET Socket имеет свойство OSSupportsIPv6. Так что-то вроде

[System.Net.Sockets]::OSSupportsIPv6

В документации сказано: «верно, если операционная система и сетевые адаптеры поддерживают протокол IPv6; в противном случае - false». Мне не ясно, означает ли это, что значение основано на том, на что способна ОС или на что она настроена.

Я посмотрел это в своей локальной справке, поэтому у меня нет удобной ссылки MSDN. Не должно быть слишком сложно найти.

1 голос
/ 18 января 2010

Это то, что вы не хотели делать, но, похоже, это лучший способ, если посмотреть на вывод, который обеспечивает интерфейс netsh .

Возможно, вы захотите посмотретьздесь для того, что вы после .Ваша реализация была бы проще, но итерации по результатам netsh interface ipv6 show interfaces - это все, что вам нужно, если вы найдете интерфейсы, они где-то включены, если вы их не найдете, это не так.

...