Я могу сделать это вручную, щелкнув правой кнопкой мыши сетевое соединение, открыв вкладку «Общий доступ» и установив флажок «Разрешить другим пользователям сети подключаться через интернет-соединение на этом компьютере».
Теперь мне нужно автоматизировать эту задачу. Для этого есть инструмент командной строки или командлет Powershell?
windows-7
internet-connection
powershell
utapyngo
источник
источник
Microsoft-Windows-SharedAccess
автоматической установки Windows так близко, но он работает только при установке Windows! technet.microsoft.com/en-us/library/ff715511.aspxОтветы:
Вот чистое решение PowerShell (должно выполняться с правами администратора):
Смотрите также этот вопрос на social.msdn.microsoft.com :
источник
[System.Runtime.Interopservices.Marshal]::ReleaseComObject(...)
посыпать немного .EnableSharing
вызывает это исключение, даже если я запускаю PowerShell от имени администратора: исключение: исключение, вызывающее «EnableSharing» с аргументом «1»: «Событию не удалось вызвать ни одного из подписчиков (исключение из HRESULT: 0x80040201) "-> Исключение было сгенерировано целью вызова. -> Событие не смогло вызвать ни одного из подписчиков (Исключение из HRESULT: 0x80040201)regsvr32 hnetcfg.dll
от имени администратора вручную.Я создал простой инструмент командной строки для этого.
Скачать и распаковать или
git clone git@github.com:utapyngo/icsmanager.git
Построить, запустив
build.cmd
Зарегистрируйте
HNetCfg
библиотеку COM:regsvr32 hnetcfg.dll
(это стандартная библиотека, расположенная по адресу%WINDIR%\System32
)Использование командной строки
Откройте командную строку как администратор
cd
вicsmanager
каталог (илиicsmanager-master
если вы скачали zip).Тип
icsmanager
Это должно отобразить доступные сетевые подключения. Обратите внимание на атрибут GUID. Чтобы использовать этот инструмент, вам нужно иметь как минимум два соединения.
Тип
icsmanager enable {GUID-OF-CONNECTION-TO-SHARE} {GUID-OF-HOME-CONNECTION}
Это должно включить ICS.
Использование Powershell
Модуль импорта:
Модуль импорта IcsManager.dll
Список сетевых подключений:
Get-NetworkConnections
Запустите общий доступ к подключению к Интернету:
Enable-ICS "Соединение с общим доступом" "Домашнее соединение"
Остановить общий доступ к подключению к Интернету:
Отключить-ICS
Отказ от ответственности: я еще не тестировал инструмент. Используйте его на свой страх и риск. Не стесняйтесь открывать вопрос на GitHub, если что-то не работает. Тяговые запросы также приветствуются.
источник
C:\Windows\System32\hnetcfg.dll
.regsvr32 hnetcfg.dll
. И я узналhnetcfg.dll
в msdn.microsoft.com/en-us/library/windows/desktop/...Насколько я понимаю, возможности маршрутизации были удалены из Windows начиная с Vista и теперь доступны только в Windows Server.
В Интернете можно найти следующую уловку для повторного включения
netsh routing
, которую вы можете попробовать на свой страх и риск. Сначала я предлагаю обычные меры предосторожности, включая создание точки восстановления системы.Запустите в командной строке (cmd) от имени администратора:
netsh add helper ipmontr.dll
netsh add helper ippromon.dll
Вам также может потребоваться установить для службы маршрутизации и удаленного доступа автоматический запуск.
Перезагрузитесь, прежде чем пытаться что-либо.
источник
The following helper DLL cannot be loaded: IPMONTR.DLL.
The following helper DLL cannot be loaded: IPPROMON.DLL.
Бывший мой коллега делал это через собственный инструмент Windows netsh. Поскольку я никогда не делал этого сам, я могу порекомендовать вам взглянуть на документацию по Microsoft netsh .
Насколько я помню, это было довольно жалко и много netsh-вызовов, где это было необходимо, но в итоге это сработало ...
источник
netsh routing
в Windows XP, но в Windows 7 они удалили эту команду. Вот почему я спрашиваю только о Windows 7.Следующее должно работать
источник
netsh routing
в Windows XP, но в Windows 7 они удалили эту команду. Вот почему я спрашиваю только о Windows 7.К сожалению, нет такой команды cmd для Windows 7 или более, поэтому я использовал эту функцию Visual Basic, чтобы сделать это:
Обратите внимание, что "" "" обязательно. Повеселись.
источник
Исходя из того, что я прочитал, если те, кто написал
netsh
, не работают, начиная с 7 и выше, это неправильно. Теперь, если речь идет строго о «netsh routing
», я думаю, вы могли бы быть правы, но это работает - я собираюсь показать содержимое созданного мной пакетного файла, который работает на Windows 8.1. Вместо того, чтобы получать обычные комментарии и фрагменты информации, я постараюсь помочь тем, у кого есть полная информация.Во-первых, вы должны убедиться, что соединение, которым вы будете делиться, настроено на фактическое использование соединения. Эта ссылка должна помочь вам в этом:
http://windows.microsoft.com/en-us/windows/set-internet-connection-sharing#1TC=windows-7
Насколько мне известно, я думаю, что это должно работать как для Windows 7, так и для 8.
Теперь, поскольку тема была о решении для командной строки, это содержимое пакетного файла о том, как настроить виртуальный беспроводной адаптер и готов к работе.
После его создания вам, возможно, придется воспользоваться приведенными выше инструкциями и убедиться, что вы используете общий доступ к исходному соединению с вновь созданным виртуальным адаптером, который будет виден вашим беспроводным устройствам.
Совместное использование файла .bat:
Я буду более чем счастлив ответить на вопросы по этому поводу, потому что будут некоторые уникальные ситуации, и я хотел бы помочь, так как мне пришлось собрать воедино то, что я нашел выше.
Но чтобы представить это наглядно, это работает в Windows 8.1 с использованием соединения Ethernet с ноутбуком, который использует свое соединение с виртуальным адаптером. Это может работать так же хорошо, если вы пытаетесь поделиться источником беспроводного соединения.
источник