Пример запуска WSH (VBS) скрипта для установки MTU на компьютере под управлением Windows XP в домене.
Запустив скрипт SetMTU.vbs, указываем имя компьютера и MTU.
И получаем подтверждение об установке MTU, либо о невозможности установить MTU.
Скриншот:
Пример запуска WSH (VBS) скрипта из консоли или в командном файле.
Синтаксис:
SetMTU.vbs [ИмяКомпьютера [MTU]]
Необязательные ключи:
-
ИмяКомпьютера - имя или IP адрес (если не указано, будет предложено ввести)
-
MTU - значение MTU от 1000 до 9999 (если не указано, будет предложено ввести)
!!!Все ключи указывать в строгой посдедовательности!!!
Пример для установки MTU=1372 на компьютере testComp:
SetMTU.vbs testComp 1372
Особенности работы скрипта:
-
Запуск скрипта должен осуществляться пользователем, имеющим правама локального администратора на целевом компьютере.
Удобно при работе в домене.
-
После установки MTU целевой компьютер должен быть перезагружен.
-
Cкрипт устанавливает MTU только для DNSRegisteredAdapters адаптеров.
см. ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DNSRegisteredAdapters
Пример vbs файла:
(Скачать файл можно будет
здесь. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)
Текст на WSH (VBS):
'Для установки MTU
Set objArgs = WScript.Arguments
On Error Resume Next
strComputer = objArgs(0)
If Err.Number <> 0 Then
strComputer = InputBox("Введите IP адрес компьютера на котором нужно установить MTU!", "Адресс", "10.1.1.x")
Err.Clear
End If
On Error GoTo 0
If strComputer = "" Then
Wscript.Echo "Действие отменено."
WScript.Quit(0)
End If
If TestPing(strComputer) = 0 Then
WScript.Echo "Адресс:" & strComputer & " не пингуется или не доступен!"
WScript.Quit(0)
End If
On Error Resume Next
strMTU = objArgs(1)
If Err.Number <> 0 Then
strMTU = InputBox("Введите MTU!", "MTU", "1500")
Err.Clear
End If
On Error GoTo 0
If (RegExpTest("^\d{4}$", strMTU)=0) OR (RegExpTest("^0\d{3}", strMTU)<>0) Then
WScript.Echo "Ошибка ввода MTU: " & strMTU & VBNewLine & "Значение не должно начинаться с 0, и должно быть 4-х значным." & VBNewLine & "Например 1500"
WScript.Quit()
End If
Const HKEY_LOCAL_MACHINE = &H80000002
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DNSRegisteredAdapters"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
For Each subkey In arrSubKeys
strKeyPath = "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & subkey
strValueName = "MTU"
dwValue = strMTU
If dwValue = 1500 Then
oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName
Else
oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
End If
'Wscript.Echo subkey & " OK"
oReg.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
If IsNull(dwValue) Then dwValue = "default" End If
Wscript.Echo "Ok, MTU for IntfID=" & subkey & " from " & strComputer & " : " & dwValue
Next
Function TestPing(address)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & address & "'")
For Each objStatus in colPings
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
TestPing = 0
Else
TestPing = 1
End If
Next
End Function
Function RegExpTest(patrn, strng)
Dim regEx, retVal ' Create variable.
Set regEx = New RegExp ' Create regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = False ' Set case sensitivity.
RegVal = regEx.Test(strng) ' Execute the search test.
RegExpTest = RegVal
End Function