'Исправить для себя ниже в скрипте: 'StrInterface - Имя интернет-интерфеса (как оно видно "Сетевых подключениях") 'nIPmin, nIPmax - диапазон перебора прямых интернет-адресов (число ууу IP-адреса xxx.xxx.xxx.yyy) 'strIPException - исключения из этого диапазона (можно оставить пустой "," , ' адреса пингуются на незанятость перед назначением). ' 'в планировщике USD указать строку запуска ' "c:\windows\system32\cscript.exe" "<путь>\ChangeIP.vbs" Option Explicit Sub SetNewIP() Const strComputer = "." Const StrInterface = "Инет" Dim strIPException, nIPmin, nIPmax, nIPstep, nIP strIPException = "," 'strIPException = ",11,13," nIPmin = 2: nIPmax = 126: nIPstep = -1 Dim timeBegin: timeBegin = now Dim objWMIService, objNetAdapter, objNetInterface, objStatus Dim strIPAddress, strSubnetMask Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\root\cimv2") For Each objNetAdapter In objWMIService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID = '" & StrInterface & "'") Exit For 'strMACAddress = objItem.MACAddress Next For Each objNetInterface In objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where MACAddress= '" & objNetAdapter.MACAddress & "'") Exit For Next '---- get current IP --- For Each strIPAddress In objNetInterface.IPAddress: Exit For Next For Each strSubnetMask In objNetInterface.IPSubnet: Exit For Next 'strIPAddress = objNetInterface.IPAddress(LBound(objNetInterface.IPAddress)) 'strIPSubnetMask = objNetInterface.IPSubnet(LBound(objNetInterface.IPSubnet)) '---- get next free IP -------------------- Dim timeSearch: timeSearch = Now do nIP = CLng(Mid(strIPAddress, InStrRev(strIPAddress, ".") + 1)) strIPAddress = Left(strIPAddress, InStrRev(strIPAddress, ".")) Dim nIPstop: nIPstop = nIP Do Do nIP = nIP + nIPstep If nIP > nIPmax Then nIP = nIPmin If nIP < nIPmin Then nIP = nIPmax Loop While InStr(strIPException, "," & CStr(nIP) & ",") > 0 '----test for free ---- For Each objStatus In objWMIService.ExecQuery("Select * From Win32_PingStatus where Address='" & strIPAddress & CStr(nIP) & "'") Exit For Next If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then Exit Do 'Wscript.Echo "Computer did not respond." Else strIPException = "," & CStr(nIP) & strIPException 'Wscript.Echo "Computer responded." End If Loop While nIPstop <> nIP strIPAddress = strIPAddress & CStr(nIP) '------ set new IP ----------------- Dim errEnable errEnable = objNetInterface.EnableStatic(Array(strIPAddress), Array(strSubnetMask)) loop while errEnable <> 0 'GoTo nextFreeIP timeSearch = Now - timeSearch Set objNetAdapter = Nothing: Set objNetInterface = Nothing Set objWMIService = Nothing: Set objStatus = Nothing Wscript.Echo "Set New IP OK " & strIPAddress & ", timeSearch = " & second(timeSearch) & ", timeFull = " & second(now - timeBegin) End Sub SetNewIP Wscript.Sleep(8*1000) |