Показать полную графическую версию : Изменение параметров интернет подключения с командной строки или Powershell
Нужно решить такую проблему. С помощью команд командной строки или PowerShell-а сделать подключение к интернету общедоступным для пользователей определенной Wi-Fi сети. Помогите пожалуйста, спасибо.
rasdial не подойдет? поподробней опишите: подключение к интернету откуда идет? к пк по веревке, от пк по вафле?
Ярослав_Остапчук@vk
24-02-2013, 19:13
rasdial -на сколько знаю, как и rasphone, подключает или отключает соединение.
Есть подключение по витухе к ноуту(например "Bill"), а ноут, в свою очередь, раздает инет от витухи по вафле(например "My_WLAn"). Мне нужно провернуть следующие манипуляции:
Bill=>Свойства=>Доступ=>Разрешить другим пользователям сети использовать подключение к Интернету данного компа(поставить галочку)=>У выпадающем меню "Выберите подключение к частной сети" выбрать "My_WLan"=>ОК.
Все это нужно сделать через командную строку или через PowerShell.
Ярослав_Остапчук@vk,
<#
.SYNOPSIS
Конфигурирование Internet Connection Sharing.
.EXAMPLE
ICS -List
ICS -External 1 -Internal 2
ICS -External 1 -Disable
ICS.ps1 -External "Internet" -Internal "Local Network" -Name
ICS.ps1 -List | Where {$_.SharingEnabled} | Foreach {ics.ps1 -External $_.Index -Disable}
#>
param (
#Индекс внешнего интерфейса
$External,
#Индекс внутреннего интерфейса
$Internal,
#Отображать ли список интерфейсов
[switch]$List,
#Отключить ICS
[switch]$Disable,
#Задать имя вместо индекса
[switch]$Name
)
#Включить или отключить ICS на заданном интерфейсе
Function Set-ConnectionSharing($netint,$type)
{
switch($netint)
{
#Отключить ICS
{$_.SharingEnabled -eq $true -and $Disable} {$_.DisableSharing();break}
{$_.SharingEnabled -eq $true} {"Internet Connection Sharing is enabled";break}
#Включить ICS
{$_.SharingEnabled -eq $false –and !$Disable} {$_.EnableSharing($type);break}
{$_.SharingEnabled -eq $false –and $Disable} {"Internet Connection Sharing is disabled";break}
default {"Interface not found" }
}
}
Function Get-InetInterface
{
$netint = @()
foreach ($i in $hnet.EnumEveryConnection)
{
$netconprop = $hnet.NetConnectionProps($i)
$inetconf = $hnet.INetSharingConfigurationForINetConnection($i)
$netint += New-Object PsObject -Property @{
Index = $index
Guid = $netconprop.Guid
Name = $netconprop.Name
DeviceName = $netconprop.DeviceName
Status = $netconprop.Status
MediaType = $netconprop.MediaType
Characteristics = $netconprop.Characteristics
SharingEnabled = $inetconf.SharingEnabled
SharingConnectionType = $inetconf.SharingConnectionType
InternetFirewallEnabled = $inetconf.InternetFirewallEnabled
}
$index++
}
$netint
}
#SHARINGCONNECTIONTYPE - для внешнего интерфейса
New-Variable -Name public -Value 0 -Option Constant
#SHARINGCONNECTIONTYPE - для внутреннего интерфейса
New-Variable -Name private -Value 1 -Option Constant
#Счетчик
New-Variable -Name index -Value 1
#Создаем ComObject типа HNetCfg.HNetShare.1
$hnet = New-Object -ComObject HNetCfg.HNetShare.1
#Отображает список доступных интерфейсов
if ($List)
{
Get-InetInterface
}
else
{
#Получаем индекс по заданному интерфейсу
If ($Name -and ($External -or $Internal))
{
$allint = Get-InetInterface
$External = $allint | Where-Object {$_.Name -eq $External} | Select-Object -ExpandProperty Index
$Internal = $allint | Where-Object {$_.Name -eq $Internal} | Select-Object -ExpandProperty Index
}
#Получаем список всех доступных интерфейсов и присваиваем переменной
$netint = $hnet.EnumEveryConnection | foreach {$hnet.INetSharingConfigurationForINetConnection($_)}
if ($External -and $Internal)
{
Set-ConnectionSharing $netint[$External-1] $public
Set-ConnectionSharing $netint[$Internal-1] $private
}
elseif ($External)
{
Set-ConnectionSharing $netint[$External-1] $public
}
elseif ($Internal)
{
Set-ConnectionSharing $netint[$Internal-1] $private
}
else {"Parameters not set"}
}
Ярослав_Остапчук@vk
25-02-2013, 10:20
Kazun, а Вы можете подробнее объяснить каким образом мне использовать этот код? в какой среде? Спасибо.
Black_Sun
14-10-2013, 15:46
Ярослав_Остапчук@vk,
Если ещё актуально, то пользоваться можно так:
Помещаете скрипт выше в файл ics.ps1 в папку windows
и далее создаёте к примеру на рабочем столе рандомный .ps1 файл с содержимым
ics -External "Local Network" -Internal "wifi" -Name
данный код расшарит локалку на wifi
естессно что бы запускался при двойном клике надо в реестре HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
поменять местами значения (по умолчанию) из разделов 0 и Open в подразделах Command
:)
p.s. А вообще вот, сделал скрипт на AutoIt
https://dl.dropboxusercontent.com/u/3053245/wifi-share.exe
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.