Mogę to zrobić ręcznie, klikając prawym przyciskiem myszy połączenie sieciowe, otwierając kartę Udostępnianie i klikając pole wyboru „Zezwalaj innym użytkownikom sieci na łączenie się za pośrednictwem połączenia internetowego tego komputera”.
Teraz muszę zautomatyzować to zadanie. Czy istnieje narzędzie wiersza polecenia lub polecenie cmdlet programu Powershell, aby to osiągnąć?
windows-7
internet-connection
powershell
utapyngo
źródło
źródło
Microsoft-Windows-SharedAccess
nienadzorowanej instalacji systemu Windows jest tak blisko, ale działa tylko w instalacji systemu Windows! technet.microsoft.com/en-us/library/ff715511.aspxOdpowiedzi:
Oto czyste rozwiązanie PowerShell (powinno być uruchamiane z uprawnieniami administracyjnymi):
Zobacz także to pytanie na social.msdn.microsoft.com :
źródło
[System.Runtime.Interopservices.Marshal]::ReleaseComObject(...)
.EnableSharing
to generuje ten wyjątek, mimo że korzystam z programu PowerShell jako Administrator: Wyjątek: wyjątek wywołujący „EnableSharing” z argumentami „1”: „Zdarzenie nie mogło wywołać żadnego z subskrybentów (Wyjątek od HRESULT: 0x80040201) „-> Zgłoszony został wyjątek przez cel wywołania. -> Wydarzenie nie mogło wywołać żadnego z subskrybentów (wyjątek od HRESULT: 0x80040201)regsvr32 hnetcfg.dll
jako administrator ręcznie.Stworzyłem do tego proste narzędzie wiersza poleceń .
Pobierz i rozpakuj lub
git clone [email protected]:utapyngo/icsmanager.git
Buduj, uruchamiając
build.cmd
Zarejestruj
HNetCfg
bibliotekę COM:regsvr32 hnetcfg.dll
(jest to standardowa biblioteka znajdująca się pod%WINDIR%\System32
)Wykorzystanie wiersza polecenia
Otwórz wiersz polecenia jako administrator
cd
doicsmanager
katalogu (lubicsmanager-master
jeśli pobrałeś zip).Rodzaj
icsmanager
Powinno to wyświetlić dostępne połączenia sieciowe. Zwróć uwagę na atrybut GUID. Aby korzystać z tego narzędzia, musisz mieć co najmniej dwa połączenia.
Rodzaj
icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}
To powinno włączyć ICS.
Wykorzystanie PowerShell
Moduł importu:
Moduł importu IcsManager.dll
Lista połączeń sieciowych:
Get-NetworkConnections
Rozpocznij udostępnianie połączenia internetowego:
Włącz-ICS „Połączenie, aby udostępnić” „Połączenie domowe”
Zatrzymaj udostępnianie połączenia internetowego:
Wyłącz-ICS
Oświadczenie: Nie przetestowałem jeszcze tego narzędzia. Używaj go na własne ryzyko. Jeśli coś nie działa, możesz otworzyć problem w GitHub. Żądania ściągania są również mile widziane.
źródło
C:\Windows\System32\hnetcfg.dll
.regsvr32 hnetcfg.dll
. I dowiedziałem się o tymhnetcfg.dll
pod adresem msdn.microsoft.com/en-us/library/windows/desktop/…Według mojego zrozumienia, możliwość routingu została usunięta z systemu Windows od czasu Vista i jest dostępna tylko teraz w systemie Windows Server.
Poniższą sztuczkę można znaleźć w Internecie, aby ponownie włączyć
netsh routing
, którą możesz wypróbować na własne ryzyko. Najpierw sugeruję typowe środki ostrożności, w tym utworzenie punktu przywracania systemu.Uruchom w wierszu polecenia (cmd) jako administrator:
netsh add helper ipmontr.dll
netsh add helper ippromon.dll
Może być również konieczne ustawienie usługi routingu i dostępu zdalnego na automatyczne uruchamianie.
Uruchom ponownie przed wypróbowaniem czegokolwiek.
źródło
The following helper DLL cannot be loaded: IPMONTR.DLL.
The following helper DLL cannot be loaded: IPPROMON.DLL.
Mój były kolega robił to za pośrednictwem własnego narzędzia Windows Netsh. Ponieważ sam tego nigdy nie robiłem, mogę doradzić, abyś zapoznał się z dokumentacją netsh firmy Microsoft .
Jak pamiętam, było to raczej żałosne i wiele netshowych połączeń tam, gdzie trzeba było to zrobić, ale w końcu zadziałało ...
źródło
netsh routing
w Windows XP, ale w Windows 7 usunęli to polecenie. Dlatego pytam tylko o Windows 7.Następujące powinny działać
źródło
netsh routing
w Windows XP, ale w Windows 7 usunęli to polecenie. Dlatego pytam tylko o Windows 7.Niestety nie ma takiego polecenia cmd dla systemu Windows 7 lub nowszego, więc skorzystałem z tej funkcji języka Visual Basic, aby to zrobić:
Pamiętaj, że „” „” jest wymagane. Baw się dobrze.
źródło
Na podstawie tego, co przeczytałem, jeśli te, które napisały, że
netsh
nie działa, zaczynają się od 7 i więcej - to jest nieprawidłowe. Teraz, jeśli chodzi tylko o „netsh routing
”, myślę, że masz rację, ale to działa - zaraz pokażę zawartość pliku wsadowego, który utworzyłem w systemie Windows 8.1. Zamiast otrzymywać zwykłe komentarze i informacje, postaram się pomóc tym z pełnymi informacjami.Po pierwsze, musisz upewnić się, że połączenie, które będziesz udostępniać, jest ustawione tak, aby współdzielić połączenie. Ten link tutaj powinien Cię zabrać:
http://windows.microsoft.com/en-us/windows/set-internet-connection-sharing#1TC=windows-7
Według mojej wiedzy uważam, że powinno to działać zarówno w systemie Windows 7, jak i 8.
Ponieważ tematem było rozwiązanie z linii poleceń, jest to zawartość pliku wsadowego, w jaki sposób konfiguruję i jestem gotowy do pracy z wirtualnym adapterem bezprzewodowym.
Po utworzeniu może być konieczne skorzystanie z powyższych instrukcji i upewnienie się, że współdzielisz połączenie źródłowe z nowo utworzonym wirtualnym adapterem, który będzie widoczny dla twoich urządzeń bezprzewodowych.
Plik .bat udostępniania połączenia:
Z przyjemnością odpowiem na pytania na ten temat, ponieważ będą wyjątkowe sytuacje i chciałbym pomóc, ponieważ musiałem poskładać to, co znalazłem powyżej.
Aby jednak spojrzeć na to z perspektywy, działa to w systemie Windows 8.1 za pomocą połączenia Ethernet z laptopem współdzielącym połączenie z wirtualnym adapterem. Może działać równie dobrze, jeśli próbujesz udostępnić źródłowe połączenie bezprzewodowe.
źródło