Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Изменение параметров интернет подключения с командной строки или Powershell (http://forum.oszone.net/showthread.php?t=254600)

termikx 21-02-2013 18:17 2096095

Изменение параметров интернет подключения с командной строки или Powershell
 
Нужно решить такую проблему. С помощью команд командной строки или PowerShell-а сделать подключение к интернету общедоступным для пользователей определенной Wi-Fi сети. Помогите пожалуйста, спасибо.

RazdoR 22-02-2013 09:52 2096486

rasdial не подойдет? поподробней опишите: подключение к интернету откуда идет? к пк по веревке, от пк по вафле?

Ярослав_Остапчук@vk 24-02-2013 19:13 2098037

rasdial -на сколько знаю, как и rasphone, подключает или отключает соединение.
Есть подключение по витухе к ноуту(например "Bill"), а ноут, в свою очередь, раздает инет от витухи по вафле(например "My_WLAn"). Мне нужно провернуть следующие манипуляции:
Bill=>Свойства=>Доступ=>Разрешить другим пользователям сети использовать подключение к Интернету данного компа(поставить галочку)=>У выпадающем меню "Выберите подключение к частной сети" выбрать "My_WLan"=>ОК.

Все это нужно сделать через командную строку или через PowerShell.

Kazun 24-02-2013 20:44 2098112

Ярослав_Остапчук@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 2098439

Kazun, а Вы можете подробнее объяснить каким образом мне использовать этот код? в какой среде? Спасибо.

Black_Sun 14-10-2013 15:46 2234278

Ярослав_Остапчук@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/...wifi-share.exe


Время: 02:05.

Время: 02:05.
© OSzone.net 2001-