Назад | Перейти на главную страницу

Сценарий Windows для перехода с DHCP на статическую IP-адресацию

Мне нужен сценарий (WSH), который клиенты могут выполнять на своих машинах самостоятельно, с минимумом хлопот и без каких-либо особых привилегий. Сценарий должен взять существующий IP-адрес, маску подсети и шлюз по умолчанию адаптера Ethernet и установить их как статические параметры. Мне также нужен сценарий, чтобы отменить это. Я понял, как вручную установить параметры в командной строке с помощью команды netsh, т.е.

netsh.exe interface ip set address {Interface} static {IP} {SUB} {DEF} 1

Однако я подозреваю, что это можно сделать автоматически с помощью сценария WSH. Клиенты - XP / Vista / Windows 7. Как лучше всего это сделать?

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

n = 1

For Each objAdapter in colAdapters 
If (objAdapter.DHCPEnabled) Then
    If Not IsNull(objAdapter.IPAddress) Then
   For i = 0 To UBound(objAdapter.IPAddress)
    IPAddress = objAdapter.IPAddress(i)
   Next
End If

If Not IsNull(objAdapter.IPSubnet) Then
   For i = 0 To UBound(objAdapter.IPSubnet)
    SubNet = objAdapter.IPSubnet(i)
   Next
End If

If Not IsNull(objAdapter.DefaultIPGateway) Then
   For i = 0 To UBound(objAdapter.DefaultIPGateway)
      GateWay = objAdapter.DefaultIPGateway(i)
   Next
End If


If Not IsNull(objAdapter.DNSServerSearchOrder) Then
   For i = 0 To UBound(objAdapter.DNSServerSearchOrder)

   Next
End If


If Not IsNull(objAdapter.DNSDomainSuffixSearchOrder) Then
   For i = 0 To UBound(objAdapter.DNSDomainSuffixSearchOrder)
      WScript.Echo "    DNS suffix search list: " & _
          objAdapter.DNSDomainSuffixSearchOrder(i)
   Next
End If



objAdapter.DHCPEnabled = false
  If Not IsNull(objAdapter.DHCPLeaseObtained) Then
     utcLeaseObtained = objAdapter.DHCPLeaseObtained
  Else
     strLeaseObtained = ""
  End If


  If Not IsNull(objAdapter.DHCPLeaseExpires) Then
     utcLeaseExpires = objAdapter.DHCPLeaseExpires

  Else
     strLeaseExpires = ""
  End If
  WScript.Echo "    DHCP lease expires:  " & strLeaseExpires



n = n + 1


'netsh interface ip set address "Local Area Connection" static objAdapter.IPAddress(i) objAdapter.IPSubnet(i) objAdapter.DefaultIPGateway(i) 1

Dim WshShell, oExec, A
Set WshShell = CreateObject("WScript.Shell")

WScript.Echo "  IP address:             " & IPAddress
WScript.Echo "  Subnet:                 " & Subnet
WScript.Echo "  Default gateway:        " & Gateway

A = "netsh interface ip set address " & Chr(34) & "Local Area Connection" & Chr(34) & " static " & IPAddress & " " & Subnet & " " & Gateway & " 1"
wscript.echo A
Set oExec = WshShell.Exec(A)


  WScript.Echo "before runnig this script on the network take out all wscripts enjoy LCpl Worsnop"
End If
next