Ich kann dies manuell tun, indem Sie mit der rechten Maustaste auf eine Netzwerkverbindung klicken, die Registerkarte "Freigabe" öffnen und das Kontrollkästchen "Anderen Netzwerkbenutzern erlauben, über die Internetverbindung dieses Computers eine Verbindung herzustellen" aktivieren.
Jetzt muss ich diese Aufgabe automatisieren. Gibt es ein Befehlszeilentool oder ein Powershell-Cmdlet, um dies zu erreichen?
windows-7
internet-connection
powershell
utapyngo
quelle
quelle
Microsoft-Windows-SharedAccess
unbeaufsichtigte Windows Setup-Komponente ist so nah, dass sie nur bei Windows Setup funktioniert! technet.microsoft.com/en-us/library/ff715511.aspxAntworten:
Hier ist eine reine PowerShell-Lösung (sollte mit Administratorrechten ausgeführt werden):
Siehe auch diese Frage unter social.msdn.microsoft.com :
quelle
[System.Runtime.Interopservices.Marshal]::ReleaseComObject(...)
Eingestreutes.EnableSharing
löst diese Ausnahme aus, obwohl ich PowerShell als Administrator ausführe: Ausnahme: Ausnahme beim Aufrufen von "EnableSharing" mit "1" -Argumenten: "Ein Ereignis konnte keinen der Abonnenten aufrufen (Ausnahme von HRESULT: 0x80040201) "-> Das Ziel eines Aufrufs hat eine Ausnahme ausgelöst. -> Ein Ereignis konnte keinen der Abonnenten aufrufen (Ausnahme von HRESULT: 0x80040201)regsvr32 hnetcfg.dll
manuell als Administrator zu arbeiten.Ich habe dafür ein einfaches Kommandozeilen-Tool erstellt .
Herunterladen und entpacken oder
git clone [email protected]:utapyngo/icsmanager.git
Bauen durch Laufen
build.cmd
Registrieren Sie die
HNetCfg
COM-Bibliothek:regsvr32 hnetcfg.dll
(Dies ist eine Standardbibliothek unter%WINDIR%\System32
)Befehlszeilenverwendung
Öffnen Sie die Eingabeaufforderung als Administrator
cd
in dasicsmanager
Verzeichnis (odericsmanager-master
wenn Sie zip heruntergeladen haben).Art
icsmanager
Dies sollte die verfügbaren Netzwerkverbindungen anzeigen. Beachten Sie das GUID-Attribut. Um dieses Tool zu verwenden, müssen Sie mindestens zwei Verbindungen haben.
Art
icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}
Dies sollte ICS aktivieren.
PowerShell Nutzung
Modul importieren:
Import-Modul IcsManager.dll
Netzwerkverbindungen auflisten:
Get-NetworkConnections
Starten Sie die gemeinsame Nutzung der Internetverbindung:
Enable-ICS "Verbindung zur Freigabe" "Heimverbindung"
Beenden Sie die gemeinsame Nutzung der Internetverbindung:
Disable-ICS
Haftungsausschluss: Ich habe das Tool noch nicht getestet. Benutzung auf eigenes Risiko. Fühlen Sie sich frei, ein Problem bei GitHub zu eröffnen, wenn etwas nicht funktioniert. Pull-Anfragen sind ebenfalls willkommen.
quelle
C:\Windows\System32\hnetcfg.dll
.regsvr32 hnetcfg.dll
. Und ich habehnetcfg.dll
unter msdn.microsoft.com/en-us/library/windows/desktop/…Nach meinem Verständnis wurde die Routing-Funktion von Windows seit Vista entfernt und ist jetzt nur in Windows Server verfügbar.
Der folgende Trick kann im Internet gefunden werden, um es wieder zu aktivieren
netsh routing
, den Sie auf eigenes Risiko ausprobieren können. Ich empfehle zunächst die üblichen Vorsichtsmaßnahmen, einschließlich der Erstellung eines Systemwiederherstellungspunkts.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 RAS-Dienst auf Automatischer Start einstellen.
Starten Sie den Computer neu, bevor Sie etwas ausprobieren.
quelle
The following helper DLL cannot be loaded: IPMONTR.DLL.
The following helper DLL cannot be loaded: IPPROMON.DLL.
Ein ehemaliger Kollege von mir hat dies über das Windows-eigene Tool netsh gemacht. Da ich das noch nie selbst gemacht habe, kann ich Ihnen raten, sich die Microsoft Netsh-Dokumentation anzusehen .
Wie ich mich erinnern kann, war es ziemlich schade und es wurden viele Netsh-Anrufe benötigt, aber es hat am Ende funktioniert ...
quelle
netsh routing
In Windows XP war dies möglich, aber in Windows 7 wurde dieser Befehl entfernt. DeshalbFolgendes sollte funktionieren
quelle
netsh routing
In Windows XP war dies möglich, aber in Windows 7 wurde dieser Befehl entfernt. DeshalbLeider gibt es keinen solchen cmd-Befehl für Windows 7 oder höher. Daher habe ich diese Visual Basic-Funktion verwendet, um dies zu erreichen:
Bitte beachten Sie, dass "" "erforderlich ist. Habe Spaß.
quelle
Basierend auf dem, was ich gelesen habe,
netsh
ist es falsch , wenn diejenigen, die das Gesagte gepostet haben, ab 7 nicht mehr funktionieren. Wenn es sich streng genommen um "netsh routing
" handelt, haben Sie wahrscheinlich Recht, aber das funktioniert - ich werde den Inhalt einer Batch-Datei anzeigen, die ich mit Windows 8.1 erstellt habe. Anstatt die üblichen Kommentare und Informationen zu erhalten, werde ich versuchen, denen mit den vollständigen Informationen zu helfen.Zunächst müssen Sie sicherstellen, dass die Verbindung, die Sie freigeben möchten, so eingestellt ist, dass sie die Verbindung tatsächlich freigibt. Dieser Link hier soll Sie dazu bringen:
http://windows.microsoft.com/en-us/windows/set-internet-connection-sharing#1TC=windows-7
Meines Wissens sollte dies für Windows 7 und 8 funktionieren.
Da es sich bei dem Thema um eine Befehlszeilenlösung handelte, ist dies der Inhalt der Batchdatei, mit der ich einen virtuellen WLAN-Adapter konfiguriert und einsatzbereit mache.
Nach der Erstellung müssen Sie möglicherweise die obigen Anweisungen befolgen und sicherstellen, dass Sie die Quellverbindung für den neu erstellten virtuellen Adapter freigeben, der von Ihren drahtlosen Geräten erkannt wird.
BAT-Datei für die gemeinsame Nutzung von Verbindungen:
Gerne beantworte ich Fragen dazu, denn es wird einige einzigartige Situationen geben, und ich würde gerne helfen, da ich zusammensetzen musste, was ich oben gefunden habe.
Um dies zu verdeutlichen, funktioniert dies unter Windows 8.1 unter Verwendung einer Ethernet-Verbindung zu einem Laptop, der seine Verbindung zum virtuellen Adapter teilt. Dies funktioniert möglicherweise auch, wenn Sie versuchen, eine drahtlose Quellverbindung freizugeben.
quelle