Frage

Ich schreibe einen Powershell-Skript, das als Build-Compliance-Test für unsere Server fungieren. Eines der Dinge, die ich tun muß, ist festzustellen, ob IPv6 Networking deaktiviert wurde.

WMI zeigt an, dass diese Informationen in dem IPAddress Eigentum von Win32_NetworkAdapterConfiguration gefunden werden, aber sowohl IPv6 oder IPv4 sein können. Dies gibt mir nicht ein „ja / nein“ beantworten, die ich zu finden bin die Hoffnung.

Weitere Einschränkungen sind, dass ich würde es vorziehen, nicht um die Details zu kratzen durch die Registrierung direkt zugreifen, noch schaben von dem Ausgang eines Befehls wie ipconfig.

Aufgrund unserer Umgebung eine Mischung aus 2003/2008 Maschinen hat, denken kann jemand eine Möglichkeit zum Test für IPv6?

Prost

War es hilfreich?

Lösung 3

Eigentlich kam ein Kollege nach oben mit einer netten Art und Weise, es zu tun - ein wenig klobig, aber funktioniert. :)

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

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

write-host $IPV6

Andere Tipps

Sie können .NET Art und Weise verwenden:

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

wird die Eigenschaft wahr sein, wenn es möglich ist, einen IPv6-Datagramm-Socket zu erstellen. Diese Eigenschaft wird auch von der globalen Datei machine.config betroffen, so dass der IPv6-Status nicht immer korrekt.

Edit:. Um dies zu testen auf einem entfernten Rechner, können Sie immer noch Powershell verwenden können, aber es hat Powershell 2.0 installiert hat, und WinRM aktiviert

Wenn diese beiden Bedingungen erfüllt sind, dann können Sie wahrscheinlich Invoke-Command verwenden , das zu tun.

Test für IPv6 in der Regel komplizierter als ein Ja würde / keine Antwort mit XP Sie haben,

  1. Ist das " Microsoft TCP / IP Version 6 " Netzwerkkomponente installiert ist.
  2. Gibt es einen Adapter eine IPv6-Adresse hat -. Würde man in der Regel davon ausgehen, (1) impliziert (2)
  3. Ob ein Adapter verfügt über einen globalen-scope IPv6, das heißt nicht nur eine Link lokale fe80 :: Präfix-Adresse oder Loopback-Schnittstelle, :: 1.

Presumaly (1) mit einem Powershell-Skript gefunden werden, wie von Microsoft demonstriert:

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

Wenn Sie speziell möchten, prüfen Sie, ob IPv6 aktiviert ist und funktioniert, würde ich sagen, dass der beste Weg, um einen Test-Host zu versuchen wäre und zu verbinden. Auf diese Weise werden Sie nicht nur einige spezifische Software-Einstellung testen, aber Sie werden auch so, dass alle Routing-Konfiguration und alles herausfinden, um es funktioniert, wie es sollte.

Dies ist, was Sie nicht tun wollen, aber es scheint die beste Methode, ging über den Ausgang der netsh interface bietet.

Möchten Sie folgendes: hier für das, was Sie nach sind. Ihre Implementierung einfacher sein würde, aber die netsh interface ipv6 show interfaces Ergebnisse iterieren ist alles, was Sie brauchen, wenn Sie Schnittstellen finden, es ist irgendwo aktiviert, wenn Sie nicht finden, ist es nicht.

Ich habe nicht getestet, aber die .NET-Socket-Klasse hat eine OSSupportsIPv6 Eigenschaft. So etwas entlang der Linien

[System.Net.Sockets]::OSSupportsIPv6

Die Dokumentation sagt „true, wenn das Betriebssystem und Netzwerkadapter das IPv6-Protokoll unterstützt.; Andernfalls false“ Es ist mir nicht klar, ob das bedeutet, dass der Wert auf dem, was das Betriebssystem in der Lage ist, oder was es ist so konfiguriert.

sah ich diese in meiner lokalen Hilfe, so dass ich nicht über eine MSDN praktisch verknüpfen. Sollte nicht allzu schwer zu finden.

Ich weiß, das ist ein alter Thread, aber ich brauchte die gleiche Sache zu überprüfen.

für einen bestimmten Adapter verwenden, um zu überprüfen ipv6 Bindung:

 Get-NetAdapterBinding -Name 'NameOfNic' -ComponentID ms_tcpip6

Dies gibt Ihnen den aktivierten Status für diesen Adapter.

Wenn Sie nur wollen, diesen Zustand abrufen können Sie:

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

Hope, das hilft. Ich habe zu prüfen, ob das funktioniert so weit zurück wie 2012. docs.microsoft.com hat nicht Liste Versionen unter Standard für 2012 / Win8

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top