Aktivieren oder Deaktivieren von IPv6-Komponenten unter Windows mit PowerShell

Im Zuge der weltweiten Umstellung von IPv4 auf IPv6 wird der Bedarf an Tools und Skripten, mit denen IT-Experten IPv6-Konfigurationen verwalten können, immer wichtiger. Eine wichtige Anforderung ist die Möglichkeit, IPv6-Komponenten auf Windows-basierten Systemen zu aktivieren oder zu deaktivieren. Unser heutiges Schwerpunktthema ist ein PowerShell-Skript, das eine präzise Konfiguration von IPv6 auf Windows-Geräten ermöglicht.

Hintergrund

IPv6, der Nachfolger von IPv4, löst das Problem der Erschöpfung der IP-Adressen und bringt zahlreiche weitere Vorteile mit sich. Während der Umstellung oder der Tests müssen IT-Expert:innen und Managed Service Provider (MSPs ) jedoch möglicherweise bestimmte IPv6-Komponenten aktivieren, deaktivieren oder optimieren. Ob für Fehlerbehebung, Netzwerkkonfiguration oder Sicherheitszwecke – eine effiziente Methode kann von unschätzbarem Wert sein. Das mitgelieferte Skript tut genau das – es ist ein Tool, um IPv6 in Windows flexibel und präzise zu konfigurieren.

Das Skript

#Requires -Version 5.1

<#
.SYNOPSIS
    Enable or disable components for IPv6 on all network connections.
.DESCRIPTION
    Enable or disable components for IPv6 on all network connections.
    Rebooting is required for Windows to apply these settings.
.EXAMPLE
     -Components DisableAll
    Disables all IPv6 components.
.EXAMPLE
    PS C:> Disable-IPv6.ps1 -ComponentsValue 0xFF
    Disables all IPv6 components from custom value.
    See link for more options:
    https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows
.EXAMPLE
     -Components EnableAll
    Enables all IPv6 components.
.EXAMPLE
     -Components DisableAllTunnels
    Disables all IPv6 Tunnels.
.EXAMPLE
     -Components DisableAllTunnels, Disable6to4
    Disables All IPv6 Tunnels and 6to4 components.
.EXAMPLE
    PS C:> Disable-IPv6.ps1 -Components DisableAll
    Disables all IPv6 components.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
.COMPONENT
    ProtocolSecurity
#>

[CmdletBinding(DefaultParameterSetName = "Components")]
param (
    [Parameter(Mandatory = $true, ParameterSetName = "Components")]
    [ValidateSet("EnableAll", "DisableAllTunnels", "Disable6to4", "DisableISATAP", "DisableTeredo", "PreferIPv4Over", "Disableall")]
    [string[]]
    $Components,
    [Parameter(Mandatory = $true, ParameterSetName = "Value")]
    [ValidateRange(0, 255)]
    [int]
    $ComponentsValue
)

begin {
    $DisableValue = 0
    if ($Components) {
        # Define values for names in $Components
        $EnableAll = 0
        $DisableAllTunnels = 0x01
        $Disable6to4 = 0x02
        $DisableISATAP = 0x04
        $DisableTeredo = 0x08
        $PreferIPv4Over = 0x20
        $Disableall = 0xFF

        # Create bit "list" and start at 0
        $DisableValue = 0
        $Components | ForEach-Object {
            # Add each item in $Components to $DisableList with bitwise-or operation
            $DisableValue = $DisableValue -bor $(Get-Variable -Name $_ -ValueOnly)
        }
    }
    elseif ($ComponentsValue) {
        $DisableValue = $ComponentsValue
    }
    function Set-ItemProp {
        param (
            $Path,
            $Name,
            $Value,
            [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")]
            $PropertyType = "DWord"
        )
        if ((Get-ItemProperty -Path $Path -Name $Name -ErrorAction SilentlyContinue)) {
            Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false | Out-Null
        }
        else {
            New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false | Out-Null
        }
    }
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    $Path = "HKLM:SYSTEMCurrentControlSetServicesTcpip6Parameters"
    $Name = "DisabledComponents"
    $Value = $DisableValue
    try {
        Set-ItemProp -Path $Path -Name $Name -Value $Value
    }
    catch {
        Write-Error $_
        exit 1
    }
}
end {}

 

Zugriff auf über 300 Skripte im NinjaOne Dojo

Zugang erhalten

Detailansicht

Das Skript ist ein PowerShell-Skript, erkennbar an seiner .ps1-Erweiterung. Im Folgenden wird die Funktionsweise Schritt für Schritt erläutert:

  • Parameter: Im Kern erfordert das Skript, dass der Benutzer spezifische IPv6-Komponenten eingibt, die er verwalten möchte, oder einen direkten Wert, der eine bestimmte Konfiguration repräsentiert.
  • Initialisierung: Das Skript initialisiert dann den Standardwert DisabledComponents auf 0, was bedeutet, dass keine Komponenten deaktiviert sind. Das Skript ordnet dann jedem Komponentennamen den entsprechenden Hex-Wert zu.
  • Verarbeitung: Für jede als Eingabe bereitgestellte Komponente berechnet das Skript einen kumulierten Hex-Wert. Dieser kumulative Wert bestimmt, welche IPv6-Komponenten deaktiviert werden sollen.
  • Einstellung des Registers: Mit dem berechneten Hexadezimalwert fährt das Skript fort, einen Registrierungsschlüssel entweder zu aktualisieren oder zu erstellen. Hier erfolgt die eigentliche Aktivierung oder Deaktivierung der IPv6-Komponenten. Das Skript zielt auf den Schlüssel DisabledComponents in der Windows-Registrierung.
  • Ausführungskontrolle: Das Skript prüft, ob es über Administratorrechte verfügt, bevor es den Hauptprozess ausführt. Ist dies nicht der Fall, wird der Benutzer aufgefordert, das Programm mit erweiterten Rechten auszuführen.

Potenzielle Anwendungsfälle

Fallstudie: Stellen Sie sich eine IT-Administratorin, Jane, vor, die für ein großes Unternehmen arbeitet. Sie stellen ein Segment ihres Netzes auf IPv6 um, haben aber Altanwendungen, die mit bestimmten IPv6-Komponenten wie Teredo nicht gut zusammenarbeiten. Mithilfe des Skripts kann Jane Teredo auf allen betroffenen Rechnern problemlos deaktivieren und so die Anwendungskompatibilität sicherstellen, ohne IPv6 vollständig abzuschalten.

Vergleiche

Obwohl manuelle Methoden wie die Navigation durch die GUI-Oberfläche oder die Verwendung nativer Windows-Befehle existieren, um IPv6-Komponenten zu deaktivieren oder zu aktivieren, können sie zeitaufwendig sein, insbesondere für große Netzwerke. Dieses Skript vereinfacht den Prozess, ermöglicht Stapelverarbeitung, Automatisierung und Präzision.

FAQs

  • Wie kann ich das Skript ausführen?
    Führen Sie es mit PowerShell und erweiterten Rechten aus.
  • Muss ich das System danach neu starten?
    Ja, ein Neustart ist erforderlich, damit die Änderungen wirksam werden.
  • Welche Windows-Versionen werden unterstützt?
    Windows 10 und Windows Server 2016 aufwärts.

Auswirkungen

IPv6 bietet zwar viele Vorteile, aber Fehlkonfigurationen können zu Sicherheitslücken oder Verbindungsproblemen führen. Die Möglichkeit, die Komponenten des Netzes zu kontrollieren, sorgt für eine sicherere und besser angepasste Netzumgebung.

Empfehlungen

  • Erstellen Sie immer eine Sicherungskopie der Registrierung, bevor Sie Änderungen vornehmen.
  • Testen Sie das Skript auf einem einzelnen Gerät, bevor Sie es in großem Umfang einsetzen.
  • Vergewissern Sie sich, dass Sie die einzelnen IPv6-Komponenten genau kennen, bevor Sie sie deaktivieren.

Abschließende Überlegungen

Tools wie NinjaOne können diese Erfahrung durch integrierte Netzwerkmanagement- und Überwachungsfunktionen weiter verbessern. In Verbindung mit solchen Skripten können IT-Fachleute eine reibungslose und sichere IPv6-Umstellung gewährleisten.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).