@Creat1ve

Как с помощью Powershell установить соединение PPPoE?

Доброго времени суток. Как с помощью Powershell установить соединение PPPoE?
Важно: не прибегая к rasphone.exe и rasdial.exe .
  • Вопрос задан
  • 372 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Igor_Ya
К сожалению это выводит лишь окошечко подключения, за которым ещё окошечко и т.д. Это не подключает.
Хотя в Windows 8 это окно выводило на подключению сразу, без новых безумных metro окон.

$itemName = 'Ростелеком'
$pressIt = 'Подкл&ючить/отключить'
$sa = New-Object -ComObject Shell.Application
$sa.NameSpace(49).Items() | foreach ({
    if($_.Name -eq $itemName){
        $_.Verbs() | foreach ({
            if ($_.name -eq $pressIt){
                $_.DoIt()
                break
            }
        })
    }
})


Похоже сам запрос "не прибегая к rasphone.exe и rasdial.exe" бессмысленен ... по крайней мере в отношении к rasdial.exe.
Дело в том, что судя по всему, он просто является "входными воротами" в процесс программного подключения, если пользователь пожелает это сделать. И дальнейший его путь пойдёт теми же dll-ками и исполняемыми файлами, которые активируются стандартным нажатием кнопки подключить.
Простейший скрипт Powershell
$x='Ростелеком'
$a='login';
$b='password';
$c=$env:WINDIR+'\System32\rasdial.exe';
&$c @($x,$a,$b) 2>&1|ForEach{
         $_
};

выведет вам ровно те же ошибки и сообщения, которые вы видите при обычном подключении.
То, что нужно вводить имя подключения Ростелеком к примеру - ни о чём не говорит, его можно взять из реестра.
HKEY_USERS\'+ваш GUID+'\Software\Microsoft\RAS Phonebook
параметр DefaultEntry - Подключение по умолчанию.
Ну а логин и пароль - чтобы все программы массово не стали ломиться в открытые ворота.
Важно, если не хотите увидеть крякозябры, не запускайте в среде powershell ISE.
Запуск стандартным Powershell файла ps.1 при помощи ярлыка
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit -ExecutionPolicy Bypass -File "G:\mypath\name.ps1"
Ответ написан
Комментировать
@azarij
В меру опытный никто
как-то так... только имя пппое соединения воткните вместо MyDialup. и если винда русская, то наверно нужно будет изменить скрипт, посмотрев что есть $sa.NameSpace(49).Items() и как оно по-русски называется.

$sa = New-Object -ComObject Shell.Application
$connections = $sa.NameSpace(49).Items()
$dialupName = "MyDialup"
for($i=0;$i -lt $connections.Count;$i++){
if($connections.Item($i).name -eq $dialupName){
$dialup = $connections.Item($i);
break;
}
}
$connect = 'C&onnect'
$verbs = $dialup.Verbs()
for($i=0;$i -lt $verbs.Count;$i++){
if($verbs.Item($i).name -eq $connect){
$verbs.Item($i).DoIt();
break;
}
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы