1 (изменено: madjahed, 2015-12-28 09:00:48)

Тема: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

Добрый вечер. Появилась необходимость перевести несколько скриптов из формата bat/cmd в vbs/js :
1. Скрипт в зависимости от выбора меняет сетевые настройки - ip, ip шлюза, dns, включает или отключает прокси в IE

@echo off
chcp 1251
cls
set /p mesto="1 - osnova , 2 - internet"
if %mesto% equ 2 goto inet
:Osnova
set IFACE="Подключение по локальной сети"
set IP=192.2.7.20
set MASK=255.255.255.0
set GATEWAY=192.2.7.1
set GWMETRIC=1
set DNS1=192.168.1.1
set DNS2=192.168.1.25
set DNS3=8.8.8.8
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0x00000001 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "192.168.1.17;192.2.7.2;<local>" /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /t REG_SZ /d proxy.osnova.ua:8080 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" /v DefaultConnectionSettings /t REG_BINARY /d 4600000007000000030 и т.д................ /f 
goto smena

:inet
set IFACE="Подключение по локальной сети"
set IP=192.2.7.35
set MASK=255.255.255.0
set GATEWAY=192.2.7.100
set GWMETRIC=1
set DNS1=192.168.1.1
set DNS2=192.168.1.25
set DNS3=8.8.8.8
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0x00000000 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" /v DefaultConnectionSettings /t REG_BINARY /d 460000000e0000000100000000000000 и т.д................ /f 
goto smena

:smena
netsh interface ip set address name=%IFACE% source=static addr=%IP% mask=%MASK% gateway=%GATEWAY% gwmetric=%GWMETRIC%
netsh interface ip set DNS %IFACE% static %DNS1% PRIMARY
netsh interface ip add DNS %IFACE% %DNS2% index=2
netsh interface ip add DNS %IFACE% %DNS3% index=3
exit

2 (изменено: godvin, 2015-12-19 17:46:43)

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

madjahed
Насчет первого скрипта, попробуйте поколдовать над этим:

strComputer = "."
Set WshShell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
Dim result
result = MsgBox("Интернет- Да; Основа- Нет", vbYesNo _
+ vbQuestion, "Подключение")
If result = vbYes Then
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","0","REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings","&H46,&H00, и т.д.","REG_BINARY"
strIPAddress = Array("10.1.1.1") 
strSubnetMask = Array("255.255.255.128") 
strGateway = Array("10.1.1.2") 
strGatewayMetric = Array(1)
strDNS = Array("10.1.1.1", "10.2.2.2", "8.8.8.8") 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    errDNS = objNetAdapter.SetDnsServerSearchOrder(strDNS)
    WScript.Echo "Подключено к СЕТЬ1."
Next
Else
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","1","REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride","west.ua;100.200.400.2;<local>","REG_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer","westrr.ua:8080","REG_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings","&H46,&H00,&H00, и т.д.","REG_BINARY"
strIPAddress = Array("10.1.1.3") 
strSubnetMask = Array("255.255.255.128") 
strGateway = Array("10.1.1.4") 
strGatewayMetric = Array(1)
strDNS = Array("10.1.1.4", "10.2.2.2", "8.8.8.8") 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    errDNS = objNetAdapter.SetDnsServerSearchOrder(strDNS)
    WScript.Echo "Подключено к СЕТЬ2."
Next
End if

Айпишники подставлять не стал - набил наубом. Буду благодарен если кто то присоединится к обсуждению и исправит ошибки. Ругается на несоответсвие типа в строчках где в реестр вносятся двоичные данные.

3 (изменено: godvin, 2015-12-19 17:45:39)

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

Попробовал также следующий вариант:

strComputer = "."
Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &strComputer & "\root\default:StdRegProv")
Set WshShell = CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
Dim result
result = MsgBox("Интернет- Да; Основа- Нет", vbYesNo _
+ vbQuestion, "Подключение")
If result = vbYes Then
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","0","REG_DWORD"
objRegistry.CreateKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections"
objRegistry.SetBinaryValue HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections","DefaultConnectionSettings",array (&H46,&H00,&H00, и т.д.)
strIPAddress = Array("10.1.1.1") 
strSubnetMask = Array("255.255.255.128") 
strGateway = Array("10.1.1.2") 
strGatewayMetric = Array(1)
strDNS = Array("10.1.1.1", "10.2.2.2", "8.8.8.8") 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    errDNS = objNetAdapter.SetDnsServerSearchOrder(strDNS)
    WScript.Echo "Подключено к СЕТЬ1."
Next
Else
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable","1","REG_DWORD"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride","west.ua;100.200.400.2;<local>","REG_SZ"
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer","westrr.ua:8080","REG_SZ"
objRegistry.SetBinaryValue HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections","DefaultConnectionSettings",array (&H46,&H00, и т.д.)
strIPAddress = Array("10.1.1.3") 
strSubnetMask = Array("255.255.255.128") 
strGateway = Array("10.1.1.4") 
strGatewayMetric = Array(1)
strDNS = Array("10.1.1.4", "10.2.2.2", "8.8.8.8") 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
    errDNS = objNetAdapter.SetDnsServerSearchOrder(strDNS)
    WScript.Echo "Подключено к СЕТЬ2."
Next
End if

Проверил - работает.

4

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

godvin
Спасибо, действительно работает.
А кто поможет со вторым батником? Очень уж бесят досовские черные окна

5

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

madjahed
Конечно, можно полностью конвертировать, но если проблема только в наличии чёрных окон, то проще всего запускать батники из скрипта:

'==================================================
' Скрыть окно программы
' Параметры: "<путь к утилите>" <ключи и параметры>
'==================================================
With WScript.Arguments
  Util = """" & .Item(0) & """" : C = .Count
  If C > 1 Then
    For i = 1 to C - 1 : S = S & " " & .Item(i) : Next
  End If
End With : CreateObject("WScript.Shell").Run Util & S, 0

6

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

Flasher
Спасибо, но хотелось бы в итоге иметь один файл, а не два. Так что желательней полностью конвертировать.

7

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

madjahed
Тогда создайте отдельную тему для задания 2., ибо объединять разные задачи в одном топике - оффтоп.

8

Re: VBS: перевести bat в vbs-смена сетевых настроек ip, dns

Flasher
Понял. Тему создал.