Wie aktiviere ich die Freigabe von Internetverbindungen über die Befehlszeile?

Ich kann dies manuell tun, indem ich mit der rechten Maustaste auf eine Netzwerkverbindung klicke, die Registerkarte Freigabe öffne und auf das Kontrollkästchen "Anderen Netzwerkbenutzern erlauben, eine Verbindung über die Internetverbindung dieses Computers herzustellen" klicke.

Jetzt muss ich diese Aufgabe automatisieren. Gibt es ein Befehlszeilentool oder ein Powershell-Cmdlet, um dies zu erreichen?

Author: Hennes, 2012-09-05

6 answers

Hier ist eine reine PowerShell-Lösung (sollte mit Administratorrechten ausgeführt werden):

# Register the HNetCfg library (once)
regsvr32 hnetcfg.dll

# Create a NetSharingManager object
$m = New-Object -ComObject HNetCfg.HNetShare

# List connections
$m.EnumEveryConnection |% { $m.NetConnectionProps.Invoke($_) }

# Find connection
$c = $m.EnumEveryConnection |? { $m.NetConnectionProps.Invoke($_).Name -eq "Ethernet" }

# Get sharing configuration
$config = $m.INetSharingConfigurationForINetConnection.Invoke($c)

# See if sharing is enabled
Write-Output $config.SharingEnabled

# See the role of connection in sharing
# 0 - public, 1 - private
# Only meaningful if SharingEnabled is True
Write-Output $config.SharingType

# Enable sharing (0 - public, 1 - private)
$config.EnableSharing(0)

# Disable sharing
$config.DisableSharing()

Siehe auch diese Frage unter social.msdn.microsoft.com:

Sie müssen die öffentliche Schnittstelle auf dem Adapter aktivieren, mit dem Sie eine Verbindung herstellen, und die Freigabe auf der privaten Schnittstelle für den Adapter aktivieren, den Sie für das Netzwerk verwenden möchten.

 23
Author: utapyngo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-24 04:25:13

Ich habe dafür ein einfaches Befehlszeilentool erstellt.

  1. herunterladen und entpacken oder git clone [email protected]:utapyngo/icsmanager.git

  2. Bauen durch Laufen build.cmd

  3. Registrieren Sie die COM-Bibliothek HNetCfg: regsvr32 hnetcfg.dll (es ist eine Standardbibliothek unter %WINDIR%\System32)

Befehlszeilennutzung

  1. Öffnen Sie die Eingabeaufforderung der Befehlszeile als Administrator

    cd in das Verzeichnis icsmanager (oder icsmanager-master wenn Sie heruntergeladen haben Zip).

  2. Typ icsmanager

    Dies sollte verfügbare Netzwerkverbindungen anzeigen. Beachten Sie das GUID-Attribut. Um dieses Tool zu verwenden, benötigen Sie mindestens zwei Verbindungen.

  3. Typ icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}

    Dies sollte ICS aktivieren.

Powershell-Nutzung

  1. Modul importieren:

    Import-Modul IcsManager.dll

  2. Liste Netzwerk Anschlüsse:

    Get-NetworkConnections

  3. Freigabe der Internetverbindung starten:

    Enable-ICS "Verbindung zu teilen" "Home-Verbindung"

  4. Beenden Sie die Freigabe der Internetverbindung:

    Disable-ICS


Haftungsausschluss: Ich habe das Tool noch nicht getestet. Verwenden Sie es auf eigenes Risiko. Fühlen Sie sich frei, ein Problem bei GitHub zu öffnen, wenn etwas nicht funktioniert. Pull-Anfragen sind ebenfalls willkommen.

 9
Author: utapyngo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-24 02:27:03

Nach meinem Verständnis wurde Routing-Fähigkeit von Windows seit Vista entfernt und ist nur jetzt in Windows Server verfügbar.

Der folgende Trick kann im Internet gefunden werden, um netsh routing wieder zu aktivieren, was Sie auf eigenes Risiko versuchen können. Ich schlage zuerst die üblichen Vorsichtsmaßnahmen vor, einschließlich des Erstellens eines Systemwiederherstellungspunkts.

  1. Erhalten IPMONTR.DLL und IPPROMON.DLL von 2003 oder von XP
  2. Kopieren Sie sie nach WINDOWS \ SYSTEM32
  3. In der Eingabeaufforderung (cmd) als Administrator ausführen :

    netsh add helper ipmontr.dll
    netsh add helper ippromon.dll

Möglicherweise müssen Sie auch den Routing-und Remotezugriffsdienst auf den automatischen Start einstellen.

Neu starten, bevor Sie versuchen alles.

 4
Author: harrymc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-09-21 09:48:01

Leider gibt es keinen solchen cmd-Befehl für Windows 7 oder mehr, daher habe ich diese Visual Basic-Funktion verwendet, um dies zu erledigen:

Private Function EnableDisableICS(ByVal sPublicConnectionName As String, ByVal sPrivateConnectionName As String, ByVal bEnable As Boolean)  
    Dim bFound As Boolean
    Dim oNetSharingManager, oConnectionCollection, oItem, EveryConnection, objNCProps
    oNetSharingManager = CreateObject("HNetCfg.HNetShare.1")
    oConnectionCollection = oNetSharingManager.EnumEveryConnection
    For Each oItem In oConnectionCollection
        EveryConnection = oNetSharingManager.INetSharingConfigurationForINetConnection(oItem)
        objNCProps = oNetSharingManager.NetConnectionProps(oItem)
        If objNCProps.name = sPrivateConnectionName Then
            bFound = True
            MsgBox("Starting Internet Sharing For: " & objNCProps.name)
            If bEnable Then
                EveryConnection.EnableSharing(1)
            Else
                EveryConnection.DisableSharing()
            End If
        End If
    Next
    oConnectionCollection = oNetSharingManager.EnumEveryConnection
    For Each oItem In oConnectionCollection
        EveryConnection = oNetSharingManager.INetSharingConfigurationForINetConnection(oItem)
        objNCProps = oNetSharingManager.NetConnectionProps(oItem)
        If objNCProps.name = sPublicConnectionName Then
            bFound = True
            MsgBox("Internet Sharing Success For: " & objNCProps.name)
            If bEnable Then
                EveryConnection.EnableSharing(0)
            Else
                EveryConnection.DisableSharing()
            End If
        End If
    Next
    Return Nothing 'bEnable & bFound
End Function  

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    EnableDisableICS("YOUR ACTIVE NETWORK", "YOUR ADAPTOR TO SHARE", True)
End Sub

Bitte beachten Sie, dass """" erforderlich ist. Spaß.

 2
Author: imad latch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-11-27 13:10:32

Folgendes sollte funktionieren

netsh routing ip autodhcp install
netsh routing ip autodhcp set interface name="Local Area Connection(or whereever your internet connection is from)" mode=enable
netsh routing ip autodhcp set global 192.168.0.1 255.255.255.0 11520
 1
Author: Craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-01 16:26:04

Basierend auf dem, was ich gelesen habe, wenn diejenigen, die geschrieben haben, dass netsh ab 7 nicht funktioniert, ist das falsch. Wenn es nun ausschließlich um "netsh routing " geht, könnten Sie wohl Recht haben, aber das funktioniert - ich werde den Inhalt einer von mir erstellten Batchdatei anzeigen, die unter Windows 8.1 funktioniert. Anstatt die üblichen Kommentare und Informationen zu erhalten, werde ich versuchen, denen mit den vollständigen Informationen zu helfen.

Zuerst müssen Sie sicherstellen, dass die Verbindung, die Sie sein werden die Freigabe ist so eingestellt, dass die Verbindung tatsächlich freigegeben wird. Dieser Link hier sollte Sie dazu bringen:

Richten Sie eine freigegebene Internetverbindung mithilfe von ICS (Internet Connection Sharing) in der Windows-Hilfe ein.

  1. Öffnen Sie Netzwerkverbindungen, indem Sie auf die Schaltfläche Start und dann auf Systemsteuerung klicken. Geben Sie im Suchfeld adapter ein und klicken Sie dann unter Netzwerk und Freigabecenter auf Netzwerk anzeigen verbindungen.

  2. Klicken Sie mit der rechten Maustaste auf die Verbindung, die Sie freigeben möchten, und klicken Sie dann auf Properties. Wenn Sie nach einem Administratorkennwort oder einer Bestätigung gefragt werden, geben Sie das Kennwort ein oder geben Sie eine Bestätigung ein.

  3. Klicken Sie auf die Registerkarte Freigabe und wählen Sie dann das Kontrollkästchen Anderen Netzwerkbenutzern erlauben, über die Internetverbindung dieses Computers eine Verbindung herzustellen.

Nachdem Sie die obigen Schritte zum Einrichten befolgt haben ICS nehmen Sie auf dem Host-Computer auf allen anderen Computern (jedoch nicht auf dem Host-Computer) die folgenden Änderungen vor.

  1. Öffnen Sie die Internetoptionen, indem Sie auf die Schaltfläche Start klicken, klicken Sie auf Systemsteuerung, klicken Sie auf Netzwerk und Internet, und klicken Sie dann auf Internetoptionen.

  2. Klicken Sie auf die Registerkarte Connections und dann auf Wählen Sie niemals eine Verbindung.

  3. Klicken Sie auf . Einstellungen.

  4. Im Dialogfeld LAN-Einstellungen (Local Area Network) , Deaktivieren Sie unter Automatische Konfiguration die Kontrollkästchen Einstellungen automatisch erkennen und Automatisches Konfigurationsskript verwenden .

  5. Deaktivieren Sie unter Proxy server das Kontrollkästchen Verwenden Sie einen Proxy Server für Ihr LAN und klicken Sie dann auf OK.

Ähnliche Anweisungen sind ebenfalls verfügbar hier.

Meines Wissens sollte dies sowohl für Windows 7 als auch für 8 funktionieren.

Da es sich bei dem Thema um eine Befehlszeilenlösung handelte, ist dies der Inhalt der Batchdatei, wie ich einen virtuellen WLAN-Adapter konfiguriert und einsatzbereit erhalte.

Sobald es erstellt wurde, müssen Sie möglicherweise die obigen Anweisungen verwenden und sicherstellen, dass Sie die Quellverbindung mit dem neu erstellten virtuellen Adapter teilen, der von Ihren drahtlosen Geräten angezeigt wird.

- Anschluss teilen .bat-Datei:

@echo off
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%

cd\
    if NOT EXIST "C:\TEMP\switch.txt" (
        GOTO :START
    ) ELSE (
        GOTO :STOP
    )

:START
REM Create Temp File for On and Off switch.
ECHO WOOHOO >"C:\TEMP\switch.txt"

REM -- Output everything that is happening into a file called wifi.txt.
REM -- Start out with a timestamp at the top to show when it was done.
REM -- All 'netsh' commands are for setting up the SSID and starting the    sharing.
REM -- I stop and start when starting the service just for prosperity.

echo _%_my_datetime% >"C:\TEMP\wifi.txt"
netsh wlan set hostednetwork mode=allow ssid=ITWORKS key=111222333 >>    "C:\TEMP\wifi.txt"
netsh wlan stop hostednetwork >>"C:\TEMP\wifi.txt"
netsh wlan start hostednetwork >>"C:\TEMP\wifi.txt"
echo MSGBOX "Wifi Sharing Started!" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q
GOTO :END


REM -- This will turn ICS off and give a prompt via VBS that you're turned off.
REM -- I timestamp when the service is turned off in the output file.
REM -- I delete the switch file to let the code know to turn it on when
REM -- when fired off again.  Tempmessage is the msgbox used to show the service
REM -- has been turned off.  Same for the msgbox above when it's on.

:STOP
echo OFF AT _%_my_datetime% >>"C:\TEMP\wifi.txt"
netsh wlan stop hostednetwork >>"C:\TEMP\wifi.txt"
DEL /Q "C:\TEMP\switch.txt"
echo MSGBOX "Wifi Sharing Stopped!" > %temp%\TEMPmessage.vbs
call %temp%\TEMPmessage.vbs
del %temp%\TEMPmessage.vbs /f /q

:END

Ich werde mehr als glücklich sein, Fragen dazu zu beantworten, weil es einige einzigartige Situationen geben wird und ich möchte helfen, da ich zusammensetzen musste, was ich oben gefunden habe.

Um dies zu relativieren, funktioniert dies unter Windows 8.1 über eine Ethernet-Verbindung zu einem Laptop, der die Verbindung zum virtuellen Adapter freigibt. Es kann genauso gut funktionieren, wenn Sie versuchen, eine drahtlose Quell-Verbindung zu teilen.

 1
Author: user2562950,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-29 07:20:00