Thaiadmin

สคริปต์เปลี่ยน ip แบบ flexible ที่สุด

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« เมื่อ: 27 สิงหาคม 2007, 13:58:26 »
เรื่องของเรื่องก็คือ ผมไปค้นหาสคริปต์สำหรับเปลี่ยน ip มาเยอะแล้ว ยังไม่มีใครทำแบบผม
ก็เลยเขียนขึ้นมาเองซะเลย จะได้ใช้ได้ง่ายๆ หน่อย

หลักการทำงานของสคริปต์ตัวนี้ก็คือ
๑. สามารถเลือกโหมดได้ว่าจะเป็น query, Static IP และ DHCP
๒. สามารถเลือกอแดปเตอร์ได้ ว่าอันไหนที่เราจะเปลี่ยน กรณีที่มีมากกว่าหนึ่งอัน แนะนำให้คิวรี่ก่อนครับ

เมื่อเข้าโปรแกรมมันจะถามโหมดครับ ก็เลือกโหมด โดยใส่ตัวเลขลงไป ถ้ากด cancel จะเป็นการออกจากโปรแกรม
ถ้าเลือก 0 มันจะไปค้นหาการ์ดแลนและแสดงผลขึ้นมาทีละอันๆ ครับ เราก็จำเลข index มันไว้ครับ
ถ้าเลือก 1 มันจะถาม index number ก็ใส่เลข index ของการ์ดลงไปครับ จะคอนฟิคการ์ดไหนก็ใส่ลงไป จากนั้นมันก็จะถามเบอร์ ip, subnet,gateway, dns ครับ
ถ้าเลือก 2 มันจะถาม index number ก็ใส่ลงไปเลยครับ มันจะไปเซ็ต dhcp ให้การ์ดครับ

ดาวน์โหลดสคริปต์ได้ข้างล่างครับ

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #1 เมื่อ: 27 สิงหาคม 2007, 14:11:50 »
ภายในสคริปต์ครับ
โค๊ด: [Select]
'******************************************************************************
'Network interface IP Configuration Version 1.0
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Used for change ip configuration for network interface on Windows 2000/xp/2003
'******************************************************************************
'ch_ip.vbs


iMode = InputBox("Select mode" & (Chr(13) & Chr(10)) & "0 Query" & (Chr(13) & Chr(10)) & "1 Static IP" & (Chr(13) & Chr(10)) & "2 Dynamic(DHCP) IP","Network Interface IP Configuration version 1.0 by Pongsathorn Srouthai")

If IsEmpty(iMode) Then
WScript.Quit
ElseIf Len(iMode) = 0 Then
WScript.Quit
Else
iMode = CInt(iMode)

If iMode > 0 Then
iIndex = InputBox("Input adapter index" & (Chr(13) & Chr(10)) & "If you could not be known, please query first.","Input adapter index number","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
End if
End if
End if


strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
        WScript.Echo "Adapter index = " & objNetAdapter.Index & vbTab & objNetAdapter.Description
    Else
If objNetAdapter.Index = iIndex Then
            If blnDHCPEnabled = True Then
                objNetAdapter.EnableDHCP
                objNetAdapter.RenewDHCPLease
                WScript.Echo "The IP address has been changed to DHCP"
            Else
strIPAddress = Array(InputBox("Input IP Address","IP address","192.168.0.11"))
If IsEmpty(strIPAddress) Then
WScript.Quit
End if
strSubnetMask = Array(InputBox("Input Subnet mask","Subnet mask","255.255.255.0"))
If IsEmpty(strSubnetMask) Then
WScript.Quit
End if
strGateway = Array(InputBox("Input Gateway IP Address","Gateway IP","192.168.0.254"))
If IsEmpty(strGateway) Then
WScript.Quit
End if
strDNSServerSearchOrder = Array(InputBox("Input DNS IP Address 1","DNS 1","192.168.0.1"),InputBox("Input DNS IP Address 2","DNS 2","0.0.0.0"))
If IsEmpty(strDNSServerSearchOrder) Then
WScript.Quit
End if
strGatewayMetric = Array(1)
                errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
                errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
                errDNSServerSearchOrder = objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
                If errEnable = 0 Then
                    WScript.Echo "The IP address has been changed."
                Else
                    WScript.Echo "The IP address could not be changed."
                End If
            End If
        Else
End If
End If
Next

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #2 เมื่อ: 28 สิงหาคม 2007, 13:23:50 »
ลองเอาไปใช้ดูล่ะ เยี่ยมเลยครับ ว่าจะหัดเขียนเองบ้าง อิ อิ

จริง ๆ อยากเอาไว้ไปเปลี่ยนเครื่องอื่น ๆ น่ะ เพราะฉะนั้นตรง Gateway + DNS ก็จะเหมือนกัน ตรงไอพีก็จะเหมือนกัน แต่เปลี่ยนแค่ตัวท้าย หุ หุ

เดี๋ยวไปลองทำบ้างดีก่า อิอิ (จะได้ทำเมื่อไหร่ก็ไม่รู้ อิอิ) :)
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #3 เมื่อ: 31 สิงหาคม 2007, 15:43:13 »
มาอัพเดทครับ ส่วนอันนี้เวอร์ชั่นไทยครับ มี ๒ แบบ คือ
๑.รุ่นไทยปกติ ใช้ได้กับ 2000/xp/2003
๒.รุ่นไทยยูนิโค้ด ใช้ได้กับ 2000/xp/2003/vista ครับ

มาแก้ไขข้อผิดพลาดครับ + อัพเดทเป็นรุ่น 1.1
เนื่องจากในรุ่นภาษาไทยมีข้อผิดพลาดเล็กน้อยครับ และได้ปรับปรุง+พัฒนาให้มีความสามารถยิ่งขึ้นมากกว่ารุ่นอังกฤษ เพื่อให้เข้าใจง่ายขึ้นครับ
ใครดาวน์โหลดไปแล้ว ก็ขอให้ดาวน์โหลดใหม่ครับ

มาแก้ไขข้อผิดพลาดอันเนื่องมาจากบั๊กของ interpreter ของ MS ครับ + อัพเดทเป็นรุ่น 1.5
เนื่องจากผมลอง debug สคริปต์แล้วไม่มีอะไรผิดพลาด แต่พอมารันจริงๆ ดันทำงานไม่ได้ในบางส่วน ก็เลยต้องมาแก้ครับ
ทีนี้ได้ทดสอบแล้วเป็นอย่างดีครับ ว่าทำงานได้แน่นอน และคาดว่าคงเป็นเวอร์ชั่นสุดท้ายแล้วครับ

มาอัพเดทเป็นรุ่น 1.6
เพิ่มความสามารถในการเซฟลงไฟล์ครับ ถ้าไม่มีอะไรเพิ่มอีกคิดว่า คงเป็นเวอร์ชั่นสุดท้ายจริงๆ ครับ

ปล. .rar เป็นเวอร์ชั่น 1.5 ครับ .zip เป็นเวอร์ชั่น 1.6 ถ้าไม่ต้องการเซฟลงไฟล์ ก็ใช้ 1.5 ครับ เพราะ 2 อันนี้ต่างกันแค่ตรงนี้ครับ ส่วนอื่นๆ เหมือนกัน
« แก้ไขครั้งสุดท้าย: 5 กันยายน 2007, 10:40:54 โดย ทัชชี่น่ารัก »

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #4 เมื่อ: 1 กันยายน 2007, 10:00:46 »
หุ หุ มีเวอร์ชั่นภาษาไทยด้วย หุ หุ

ขอเอามาศึกษาหน่อยนะครับ หุ หุ ขอบคุณครับ :)
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #5 เมื่อ: 1 กันยายน 2007, 13:09:09 »
ส่วนอันนี้เป็นโค้ดของตัวภาษาไทย เผื่อใครอยากศึกษาผ่านหน้าเว็บ

ถ้าจะเอาไปใช้กับ vista กรุณา save เป็นแบบ unicode นะครับ ถ้าเซฟเป็น ANSI มันจะแสดงเป็นตัวยึกยือภาษามะนาวต่างดุ๊ด

โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration Version 1.5 thai interface
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Used change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip_thai.vbs

On Error Resume Next
'เมนูการทำงาน
iMode = InputBox("เลือกวาระการทำงาน" & (Chr(13) & Chr(10)) & "0 ตรวจสอบหมายเลขการ์ด" & (Chr(13) & Chr(10)) & "1 ตั้งค่า IP คงที่" & (Chr(13) & Chr(10)) & "2 ตั้งค่า IP แปรผัน (DHCP)","โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น 1.5")

If IsEmpty(iMode) Then
WScript.Quit
ElseIf Len(iMode) = 0 Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 0 Then
iIndex = InputBox("กรุณาใส่หมายเลขการ์ด" & (Chr(13) & Chr(10)) & "ถ้าคุณไม่รู้ กรุณาตรวจสอบก่อน","กรุณาใส่หมายเลขการ์ด (ค่าเริ่มต้น คือ 1)","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
WScript.Quit
End If
ElseIf iMode > 2 Then
MsgBox "กรุณาใส่ตัวเลขในช่วงที่กำหนด!"
WScript.Quit
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
ifq = "หมายเลขการ์ด = " & objNetAdapter.Index & (Chr(13) & Chr(10)) & "ชื่อการ์ด = " & objNetAdapter.Description & (Chr(13) & Chr(10)) & "หมายเลข MAC= " & objNetAdapter.MACAddress
ipconfig = " "
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "หมายเลข IP = " & objNetAdapter.IPAddress(i)
Next
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "เกตเวย์เริ่มต้น = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & (Chr(13) & Chr(10)) &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & (Chr(13) & Chr(10)) & ipconfig
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "ใช้งานเป็น DHCP = ใช่" & (Chr(13) & Chr(10)) & "เซิฟเวอร์ DHCP = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "รับค่า DHCP เมื่อ = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "ค่า DHCP หมดอายุเมื่อ = " & strLeaseExpires
End If
ifq = ifq & (Chr(13) & Chr(10)) & dhcpuse
WScript.Echo ifq

    Else
If objNetAdapter.Index = iIndex Then
            If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
objNetAdapter.SetDNSServerSearchOrder()
                objNetAdapter.EnableDHCP()
Wscript.Echo "ที่อยู่ IP ได้ถูกเปลี่ยนให้ใช้เป็น DHCP"
                objNetAdapter.RenewDHCPLease
            Else
If Not IsNull(objNetAdapter.IPAddress) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If

strIPAddress = Array(InputBox("กรุณาใส่หมายเลข IP (ค่าเริ่มต้นคือค่าเดิม)","หมายเลข IP",oldip))
If IsEmpty(strIPAddress) Then
WScript.Quit(0)
End if
strSubnetMask = Array(InputBox("กรุณาใส่ Subnet mask (ค่าเริ่มต้นคือค่าเดิม)","Subnet mask",oldsn))
If IsEmpty(strSubnetMask) Then
WScript.Quit(0)
End if
strGateway = Array(InputBox("กรุณาใส่หมายเลข IP เกตเวย์ (ค่าเริ่มต้นคือค่าเดิม)","Gateway IP",oldgw))
If IsEmpty(strGateway) Then
WScript.Quit(0)
End If

strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0","DNS"),InputBox("กรุณาใส่หมายเลข IP DNS 1","DNS"))
If IsEmpty(strDNSServerSearchOrder) Then
WScript.echo "โปรดใส่ข้อมูลให้ครบ"
Wscript.Quit(0)
End If

strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
If errEnable = 0 Then
        WScript.Echo "ได้ทำการเปลี่ยนหมายเลข IP เรียบร้อยแล้ว"
Else
WScript.Echo "ยังไม่ได้ทำการเปลี่ยนหมายเลข IP"
End If
            End If
        Else
End If
End If
Next

Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4)+543    & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function
« แก้ไขครั้งสุดท้าย: 2 กันยายน 2007, 14:31:40 โดย ทัชชี่น่ารัก »

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #6 เมื่อ: 5 กันยายน 2007, 10:43:01 »
code ของเวอร์ชั่น 1.6 ครับ
โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration Version 1.6 thai interface
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Used change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip_thai.vbs

On Error Resume Next
'เมนูการทำงาน
iMode = InputBox("เลือกวาระการทำงาน" & (Chr(13) & Chr(10)) & "0 ตรวจสอบหมายเลขการ์ด" & (Chr(13) & Chr(10)) & "1 ตั้งค่า IP คงที่" & (Chr(13) & Chr(10)) & "2 ตั้งค่า IP แปรผัน (DHCP)","โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น 1.6")

If IsEmpty(iMode) Then
WScript.Quit
ElseIf Len(iMode) = 0 Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 0 Then
iIndex = InputBox("กรุณาใส่หมายเลขการ์ด" & (Chr(13) & Chr(10)) & "ถ้าคุณไม่รู้ กรุณาตรวจสอบก่อน","กรุณาใส่หมายเลขการ์ด (ค่าเริ่มต้น คือ 1)","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
WScript.Quit
End If
ElseIf iMode > 2 Then
MsgBox "กรุณาใส่ตัวเลขในช่วงที่กำหนด!"
WScript.Quit
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
ifq = "หมายเลขการ์ด = " & objNetAdapter.Index & (Chr(13) & Chr(10)) & "ชื่อการ์ด = " & objNetAdapter.Description & (Chr(13) & Chr(10)) & "หมายเลข MAC= " & objNetAdapter.MACAddress
ipconfig = " "
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "หมายเลข IP = " & objNetAdapter.IPAddress(i)
Next
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "เกตเวย์เริ่มต้น = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & (Chr(13) & Chr(10)) &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & (Chr(13) & Chr(10)) & ipconfig
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "ใช้งานเป็น DHCP = ใช่" & (Chr(13) & Chr(10)) & "เซิฟเวอร์ DHCP = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "รับค่า DHCP เมื่อ = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "ค่า DHCP หมดอายุเมื่อ = " & strLeaseExpires
End If
ifq = ifq & (Chr(13) & Chr(10)) & dhcpuse
WScript.Echo ifq
wtf= MsgBox("คุณต้องการเขียนข้อมูลลงแฟ้มหรือไม่?", vbYesNo + vbQuestion + vbDefaultButton2 + vbApplicationModal, "จัดเก็บข้อมูล")
If wtf = vbYes Then
savetofile()
Else
WScript.Quit(0)
End If
    Else
If objNetAdapter.Index = iIndex Then
            If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
objNetAdapter.SetDNSServerSearchOrder()
                objNetAdapter.EnableDHCP()
Wscript.Echo "ที่อยู่ IP ได้ถูกเปลี่ยนให้ใช้เป็น DHCP"
                objNetAdapter.RenewDHCPLease
            Else
If Not IsNull(objNetAdapter.IPAddress) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If

strIPAddress = Array(InputBox("กรุณาใส่หมายเลข IP (ค่าเริ่มต้นคือค่าเดิม)","หมายเลข IP",oldip))
If IsEmpty(strIPAddress) Then
WScript.Quit(0)
End if
strSubnetMask = Array(InputBox("กรุณาใส่ Subnet mask (ค่าเริ่มต้นคือค่าเดิม)","Subnet mask",oldsn))
If IsEmpty(strSubnetMask) Then
WScript.Quit(0)
End if
strGateway = Array(InputBox("กรุณาใส่หมายเลข IP เกตเวย์ (ค่าเริ่มต้นคือค่าเดิม)","Gateway IP",oldgw))
If IsEmpty(strGateway) Then
WScript.Quit(0)
End If

strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0","DNS"),InputBox("กรุณาใส่หมายเลข IP DNS 1","DNS"))
If IsEmpty(strDNSServerSearchOrder) Then
WScript.echo "โปรดใส่ข้อมูลให้ครบ"
Wscript.Quit(0)
End If

strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
If errEnable = 0 Then
        WScript.Echo "ได้ทำการเปลี่ยนหมายเลข IP เรียบร้อยแล้ว"
Else
WScript.Echo "ยังไม่ได้ทำการเปลี่ยนหมายเลข IP"
End If
            End If
        Else
End If
End If
Next

Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4)+543    & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
Dim oFilesys, oFiletxt, sFilename, sPath, midmac
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'ถ้า true = เขียนทับอัตโนมัต ถ้า false มันจะเขียนไฟล์อื่นเพิ่มขึ้นมา
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
oFiletxt.WriteLine(ifq)
oFiletxt.Close'
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename,vbInformation + vbOKOnly,"จัดเก็บข้อมูล"
End if
End Function

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #7 เมื่อ: 6 กันยายน 2007, 10:51:18 »
มาอัพเดทเพิ่มเติมครับ...เป็นเวอร์ชั่น 1.8 ครับ
ที่เพิ่มมามีดังนี้ครับ
- เพิ่มการตรวจสอบข้อผิดพลาดมากขึ้น ทำให้การใช้งานมีปัญหาน้อยลงจนแทบไม่มีเลย
- เพิ่มการตรวจสอบการเขียนแฟ้ม หากพบแฟ้มที่เคยบันทึกไว้ก็จะถามว่าจะเขียนทับหรือไม่
-ปรับปรุงหน้าตานิดหน่อยครับ

ต้องขอบอกไว้ตรงนี้ว่าโปรแกรมสคริปต์นี้เขียนจากการใช้งานจริง หากต้องการให้เพิ่มเติมหรือพบข้อผิดพลาดตรงไหน ก็บอกมาได้ครับ

เวอร์ชั่นนี้เอาโค้ดมาให้ดูอย่างเดียวครับ จะใช้ก็ copy ไปใช้ได้เลยครับ
โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration Version 1.8 thai interface
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Used change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip_thai.vbs
'Version History
'1.0 Initial version
'- can select mode
'- can show name and mac address
'1.1 translate to Thai
'- could setup dns
'- added error check
'1.5 added more functions
'- could show ip and dhcp option automatically
'- added error check for static ip input
'1.6 Write to files
'- added write to file function after shown interface information
'1.7 added check file exist
'- added check file exist, user can choose overwrite or not
'1.8 changed method
'- change method for user input
'- added more error check

On Error Resume Next
'เมนูการทำงาน
iMode = InputBox("เลือกวาระการทำงาน" & (Chr(13) & Chr(10)) & "0 ตรวจสอบหมายเลขการ์ด" & (Chr(13) & Chr(10)) & "1 ตั้งค่า IP คงที่" & (Chr(13) & Chr(10)) & "2 ตั้งค่า IP แปรผัน (DHCP)","โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น 1.8")

If IsEmpty(iMode) Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 2 Then
msgbox "กรุณาใส่ข้อมูลในช่วงที่กำหนด",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
ElseIf iMode > 0 Then
iIndex = InputBox("กรุณาใส่หมายเลขการ์ด" & (Chr(13) & Chr(10)) & "ถ้าคุณไม่รู้ กรุณาตรวจสอบก่อน","กรุณาใส่หมายเลขการ์ด (ค่าเริ่มต้น คือ 1)","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
msgbox "กรุณาใส่ข้อมูลในช่องด้วย",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
End If
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
ifq = "หมายเลขการ์ด = " & objNetAdapter.Index & (Chr(13) & Chr(10)) & "ชื่อการ์ด = " & objNetAdapter.Description & (Chr(13) & Chr(10)) & "หมายเลข MAC= " & objNetAdapter.MACAddress
ipconfig = " "
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "หมายเลข IP = " & objNetAdapter.IPAddress(i)
Next
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & (Chr(13) & Chr(10)) & "เกตเวย์เริ่มต้น = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & (Chr(13) & Chr(10)) &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & (Chr(13) & Chr(10)) & ipconfig
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "ใช้งานเป็น DHCP = ใช่" & (Chr(13) & Chr(10)) & "เซิฟเวอร์ DHCP = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "รับค่า DHCP เมื่อ = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & (Chr(13) & Chr(10)) & "ค่า DHCP หมดอายุเมื่อ = " & strLeaseExpires
End If
ifq = ifq & (Chr(13) & Chr(10)) & dhcpuse
msgbox ifq, 0 + 64 + 0 + 0, "ข้อมูลการ์ด"
if MsgBox("คุณต้องการเขียนข้อมูลลงแฟ้มหรือไม่?", 4 + 32 + 256, "จัดเก็บข้อมูล") = 6 Then
savetofile()
End If
    Else
If objNetAdapter.Index = iIndex Then
If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
if msgbox("ต้องการเปลี่ยน DNS ให้รับค่าจาก DHCP หรือไม่?", 4 + 32 + 0, "รับค่า DNS จาก DHCP") = 6 Then
objNetAdapter.SetDNSServerSearchOrder()
End if
objNetAdapter.EnableDHCP()
objNetAdapter.RenewDHCPLease
If objNetAdapter.DHCPEnabled = True Then
Wscript.Echo "ที่อยู่ IP ได้ถูกเปลี่ยนให้ใช้เป็น DHCP"
Else
msgbox "ที่อยู่ IP ยังไม่ได้เปลี่ยนมาใช้เป็น DHCP" & vbcrlf & "อาจจะเป็นไปได้ว่า สายเชื่อมต่อเครือข่าย ไม่ได้ต่ออยู่" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End if
Else
If Not IsNull(objNetAdapter.IPAddress) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If
strIPAddress = Array(InputBox("กรุณาใส่หมายเลข IP (ค่าเริ่มต้นคือค่าเดิม)","หมายเลข IP",oldip))
If IsEmpty(strIPAddress) Then
WScript.Quit(0)
End if
strSubnetMask = Array(InputBox("กรุณาใส่ Subnet mask (ค่าเริ่มต้นคือค่าเดิม)","Subnet mask",oldsn))
If IsEmpty(strSubnetMask) Then
WScript.Quit(0)
End if
strGateway = Array(InputBox("กรุณาใส่หมายเลข IP เกตเวย์ (ค่าเริ่มต้นคือค่าเดิม)","Gateway IP",oldgw))
If IsEmpty(strGateway) Then
WScript.Quit(0)
End If
strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0","DNS"),InputBox("กรุณาใส่หมายเลข IP DNS 1","DNS"))
If IsEmpty(strDNSServerSearchOrder) Then
msgbox "กรุณาใส่ข้อมูลให้ครบ",0 + 48 + 0,"ผิดพลาด"
Wscript.Quit(0)
End If
strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
If errEnable = 0 Then
        WScript.Echo "ได้ทำการเปลี่ยนหมายเลข IP เรียบร้อยแล้ว"
Else
msgbox "ยังไม่ได้ทำการเปลี่ยนหมายเลข IP" & vbcrlf & "อาจเป็นไปได้ว่า สายเครือข่ายไม่ได้เชื่อมต่อ" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End If
End If
End If
End If
Next

Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4)+543    & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
Dim oFilesys, oFiletxt, sFilename, sPath, midmac
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'เปลี่ยน mac address เป็นข้อความที่ไม่มี colon
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close'
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
ElseIf MsgBox("ตรวจพบแฟ้มมีอยู่ก่อนแล้ว คุณต้องการเขียนทับหรือไม่?", 4 + 32 + 256,"พบแฟ้มมีอยู่ก่อนแล้ว") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close'
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
End If
End Function

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #8 เมื่อ: 8 กันยายน 2007, 09:21:13 »
หุหุ มีเวอร์ชั่นใหม่เรื่อย ๆ เลย อันเก่ายังไม่ได้ลองไปศึกษาดูลึก ๆ เลยอ่ะ ทำงานเพลิน มาเจอ Server มีปัญหาอีก แย่เลย หุ หุ

เดี๋ยวถ้าได้ลองไปปรับเปลี่ยนแก้ไข แล้วจะเอามา แชร์บ้าง อิ อิ (จะได้ทำรึป่าวหว่า หุ หุ)
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #9 เมื่อ: 7 ธันวาคม 2007, 16:46:14 »
อันนี้เวอร์ชั่น 1.9 ครับ

+ เพิ่มการเช็ค DNS ก่อนกรอกใหม่ จะได้ไม่ต้องกรอกใหม่ทุกครั้ง
+ แก้ไขคำผิดบางคำ

โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration Version 1.9 thai interface
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Used change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip_thai.vbs
'Version History
'1.0 Initial version
'- can select mode
'- can show name and mac address
'1.1 translate to Thai
'- can set dns
'- added error check
'1.5 added more functions
'- can show ip and dhcp option automatically
'- added error check for static ip input
'1.6 Write to files
'- added write to file function after shown interface information
'1.7 added check file exist
'- added check file exist, user can choose overwrite or not
'1.8 changed method
'- changed method for user input
'- added more error check
'1.9 added dns check

On Error Resume Next
'เมนูการทำงาน
pVersion = "1.9"
iMode = InputBox("เลือกวาระการทำงาน" & vbcrlf & "0 ตรวจสอบข้อมูลการ์ด" & vbcrlf & "1 ตั้งค่า IP คงที่" & vbcrlf & "2 ตั้งค่า IP แปรผัน (DHCP)","โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น " & pVersion)

If IsEmpty(iMode) Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 2 Then
msgbox "คุณไม่ได้ใส่ข้อมูลในช่อง" & vbcrlf & "หรือใส่มากเกินไป",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
ElseIf iMode > 0 Then
iIndex = InputBox("กรุณาใส่หมายเลขการ์ด  (ค่าเริ่มต้น คือ 1)" & vbcrlf & "ถ้าคุณไม่รู้ กรุณาตรวจสอบก่อน","ใส่หมายเลขการ์ด","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
msgbox "กรุณาใส่ข้อมูลในช่องด้วย",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
End If
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
'ดึงค่าจาก WMI
ifq = "หมายเลขการ์ด = " & objNetAdapter.Index & vbcrlf & "ชื่อการ์ด = " & objNetAdapter.Description & vbcrlf & "หมายเลข MAC= " & objNetAdapter.MACAddress
ipconfig = " "
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "หมายเลข IP = " & objNetAdapter.IPAddress(i)
Next
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & vbcrlf & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & vbcrlf & "เกตเวย์เริ่มต้น = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & vbcrlf &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & vbcrlf & ipconfig
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "ใช้งานเป็น DHCP = ใช่" & vbcrlf & "เซิฟเวอร์ DHCP = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & vbcrlf & "รับค่า DHCP เมื่อ = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & vbcrlf & "ค่า DHCP หมดอายุเมื่อ = " & strLeaseExpires
End If
ifq = ifq & vbcrlf & dhcpuse
msgbox ifq, 0 + 64 + 0 + 0, "ข้อมูลการ์ด"
if MsgBox("คุณต้องการเขียนข้อมูลลงแฟ้มหรือไม่?", 4 + 32 + 256, "จัดเก็บข้อมูล") = 6 Then
savetofile()
End If
    Else
If objNetAdapter.Index = iIndex Then
            If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
if msgbox("ต้องการเปลี่ยน DNS ให้รับค่าจาก DHCP หรือไม่?", 4 + 32 + 0, "รับค่า DNS จาก DHCP") = 6 Then
objNetAdapter.SetDNSServerSearchOrder()
End if
objNetAdapter.EnableDHCP()
                objNetAdapter.RenewDHCPLease
If objNetAdapter.DHCPEnabled = True Then
msgbox "ที่อยู่ IP ได้ถูกเปลี่ยนให้ใช้เป็น DHCP แล้ว"
Else
msgbox "ที่อยู่ IP ยังไม่ได้เปลี่ยนมาใช้เป็น DHCP" & vbcrlf & "อาจจะเป็นไปได้ว่า สายเชื่อมต่อเครือข่าย ไม่ได้ต่ออยู่" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End if
            Else
If Not IsNull(objNetAdapter.IPAddress) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
if (i) = 0 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip1 = "0.0.0.0"
end if
end if
if (i) = 1 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip2 = "0.0.0.0"
end if
end if
Next
End If

strIPAddress = Array(InputBox("กรุณาใส่หมายเลข IP (ค่าเริ่มต้นคือค่าเดิม)","หมายเลข IP",oldip))
If IsEmpty(strIPAddress) Then
WScript.Quit(0)
End if
strSubnetMask = Array(InputBox("กรุณาใส่ Subnet mask (ค่าเริ่มต้นคือค่าเดิม)","Subnet mask",oldsn))
If IsEmpty(strSubnetMask) Then
WScript.Quit(0)
End if
strGateway = Array(InputBox("กรุณาใส่หมายเลข IP เกตเวย์ (ค่าเริ่มต้นคือค่าเดิม)","Gateway IP",oldgw))
If IsEmpty(strGateway) Then
WScript.Quit(0)
End If
strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0 (ค่าเริ่มต้นคือค่าเดิม)","DNS",dnsip1),InputBox("กรุณาใส่หมายเลข IP DNS 1 (ค่าเริ่มต้นคือค่าเดิม)","DNS",dnsip2))
If IsEmpty(strDNSServerSearchOrder) Then
msgbox "กรุณาใส่ข้อมูลให้ครบ",0 + 48 + 0,"ผิดพลาด"
Wscript.Quit(0)
End If
strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
If errEnable = 0 Then
        msgbox "ได้ทำการเปลี่ยนหมายเลข IP เรียบร้อยแล้ว"
Else
msgbox "ยังไม่ได้ทำการเปลี่ยนหมายเลข IP" & vbcrlf & "อาจเป็นไปได้ว่า สายเครือข่ายไม่ได้เชื่อมต่อ" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End If
            End If
End If
End If
Next
'แปลงค่า WMIDateString เป็น UTCDATE
Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4)+543    & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
Dim oFilesys, oFiletxt, sFilename, sPath, midmac
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'เปลี่ยน mac address เป็นข้อความที่ไม่มี colon
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close'
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
ElseIf MsgBox("ตรวจพบแฟ้มมีอยู่ก่อนแล้ว คุณต้องการเขียนทับหรือไม่?", 4 + 32 + 256,"พบแฟ้มมีอยู่ก่อนแล้ว") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close'
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
End If
End Function

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #10 เมื่อ: 8 ธันวาคม 2007, 09:25:43 »
ตามมาดูอีก เดี๋ยวจะเอาติด แฮนดี้ไดฟ์ไว้ จะได้ใช้ หุ หุ  จนแล้วจนรอด ผมก็ยังไม่ได้ลุยกะวินโดว์ ตอนนี้กำลัง ศึกษา วิธีเขียนสคริป ในลินุกซ์ กำลังจะทำ เครื่องสำรองข้อมูล หุ หุ

ขอบคุณครับ
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #11 เมื่อ: 29 ธันวาคม 2007, 19:56:26 »
นำรุ่น ๒.๐ มาฝากครับ
ส่วนที่พัฒนาเพิ่มขึ้นมาก็คือ สามารถจัดเก็บเป็น Profile ได้ครับ กรณีที่เอาไปใช้กับ Notebook แล้วต้องนำไปใช้กับหลายๆ ที่ ที่มีการเซ็ตค่า ip ต่างกัน เราก็สามารถล็อคค่าเหล่านั้นไว้ได้ครับ เวลาที่เราจะนำมาใช้ในภายหลัง ก็เพียงแค่คลิกที่ไฟล์ที่เรา save ไว้เท่านั้นเองครับ ค่า ip ที่เคยเซ็ตไว้ก็จะกลับมาทันที

อ้อ...รุ่นนี้มีเวอร์ชั่นภาษาอังกฤษด้วยครับ สำหรับผู้ไม่สันทัดภาษาไทย หรือ ฝรั่งครับ

ปล. เวอร์ชั่นนี้ได้ซ่อนโค้ดลับไว้ ๑ บรรทัด

ดาวน์โหลดได้ข้างล่างครับ

ส่วนอันนี้เป็นโค้ดของเวอร์ชั่นอังกฤษครับ
โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration tool
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Use for change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip.vbs
'»ÃÐÇѵԡÒÃÍÍ¡ÃØè¹
'1.0 ÃØè¹ááàÃÔèÁ
'- ÊÒÁÒöàÅ×Í¡âËÁ´ä´é
'- ÊÒÁÒöáÊ´§ª×èÍ¡ÒÃì´áÅзÕèÍÂÙèáÁç¤
'1.1 á»Åà»ç¹ÀÒÉÒä·Â
'- ÊÒÁÒöµÑ駤èÒ DNS ä´é
'- à¾ÔèÁ¡ÒõÃǨÊͺ¢éͼԴ¾ÅÒ´
'1.5 à¾ÔèÁ¤ÇÒÁÊÒÁÒö·ÕèËÅÒ¡ËÅÒÂÁÒ¡¢Öé¹
'- ÊÒÁÒöáÊ´§ ip áÅеÑÇàÅ×Í¡¢Í§ DHCP ä´éâ´ÂÍѵâ¹ÁѵÔ
'- à¾ÔèÁ¡ÒõÃǨÊͺ¢éͼԴ¾ÅÒ´ÊÓËÃѺ¡Òûé͹¤èÒ ip ¤§·Õè
'1.6 à¢Õ¹ŧá¿éÁ
'- à¾ÔèÁ¤ÇÒÁÊÒÁÒöà¢Õ¹ŧá¿éÁà¾×è͵ÃǨ´Ùã¹ÀÒÂËÅѧ
'1.7 à¾ÔèÁ¡ÒõÃǨÊͺá¿éÁ
'- à¾ÔèÁ¡ÒõÃǨÊͺá¿éÁ·ÕèÁÕÍÂÙè¡è͹ ¼ÙéãªéÊÒÁÒö¡àÅÔ¡¡ÒÃà¢Õ¹·Ñºä´é
'1.8 à»ÅÕè¹à§×è͹ä¢
'- à»ÅÕè¹à§×è͹䢡Òûé͹¢éÍÁÙÅ
'- à¾ÔèÁ¡ÒõÃǨÊͺ¢éͼԴ¾ÅÒ´Í×è¹æ
'1.9 à¾ÔèÁ¡ÒõÃǨÊͺ DNS
'- à¾ÔèÁ¡ÒõÃǨÊͺ DNS ¡è͹µÑé§à»ç¹¤èÒàÃÔèÁµé¹ã¹¡Òûé͹¢éÍÁÙÅ
'- á¡é䢤Ӻҧ¤ÓãËé¶Ù¡µéͧ
'2.0 ÊÒÁÒö¨Ñ´à¡çºÅ§á¿éÁ à¾×èͤÇÒÁÊдǡ㹡ÒÃàÃÕ¡ãªéÀÒÂËÅѧ
'- ÊÒÁÒö¨Ñ´à¡çºÅ§á¿éÁ BAT à¾×èÍÊдǡ㹡ÒÃàÃÕ¡ãªéÀÒÂËÅѧ
'- ÊÒÁÒöàÅ×Í¡¨Ñ´à¡çºä´é·Ñ駠 local áÅÐ wireless

Dim oFilesys, oFiletxt, sFilename, sPath, ipsetting, midmac
On Error Resume Next

'àÁ¹Ù¡Ò÷ӧҹ
pVersion = "2.0"
iMode = InputBox("Select Mode:" & vbcrlf & "0 Query interface adapter" & vbcrlf & "1 Setup static IP" & vbcrlf & "2 Setup dynamic IP (DHCP)","Network Interface IP Configuration Tool  V. " & pVersion,"3")

If IsEmpty(iMode) Then
WScript.Quit
Else
'á»Å§ string à»ç¹ integer
iMode = CInt(iMode)

'µÃǨÊͺ¡ÒÃà¢éÒàÁ¹Ù
If iMode > 3 Then
msgbox "You are not input data value" & vbcrlf & "or input more value",0 + 48 + 0,"Error!"
WScript.Quit
ElseIf iMode < 3 Then
If iMode > 0 Then
iIndex = InputBox("Please specify adapter index  (Default is 1)" & vbcrlf & "If you could not be known, Please query first","Input adapter index number","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
msgbox "Please input data value!!",0 + 48 + 0,"Error!"
WScript.Quit
End If
End If
End If
End if

'àÃÕ¡¤èÒ¨Ò¡ WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'àÅ×Í¡¤èÒ¨Ò¡àÁ¹Ù
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
Case 3
MsgBox "Network Interface IP Configuration Tool  V. "& pVersion & vbcrlf  &"Developer: Pongsathorn Sraouthai" & vbcrlf & "e-mail: pongsathorns@gmail.com" & vbcrlf & "License Type: LGPL",0 + 64 + 0 + 0,"About Me"
WScript.Quit
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
'µÃǨÊͺ¡ÒÃì´
ifq = "Adapter Index = " & objNetAdapter.Index & vbcrlf & "Adapter Name = " & objNetAdapter.Description & vbcrlf & "MAC Address = " & objNetAdapter.MACAddress
ipconfig = " "
'µÃǨÊͺ IP
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "IP Address = " & objNetAdapter.IPAddress(i)
Next
End If
'µÃǨÊͺ Subnet
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & vbcrlf & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
'µÃǨÊͺ Gateway
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & vbcrlf & "Default Gateway = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
'µÃǨÊͺ DNS
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & vbcrlf &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & vbcrlf & ipconfig
'µÃǨÊͺ DHCP
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "DHCP Enabled = Yes" & vbcrlf & "DHCP Server = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & vbcrlf & "DHCP Lease obtained = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & vbcrlf & "DHCP Lease expires = " & strLeaseExpires
End If
ifq = ifq & vbcrlf & dhcpuse
msgbox ifq, 0 + 64 + 0 + 0, "Adapter Information"
if MsgBox("Would you like to write this information to file?", 4 + 32 + 256, "Save Info") = 6 Then
savetofile()
End If
    Else
If objNetAdapter.Index = iIndex Then
'µÑ駤èÒ IP à»ç¹ DHCP
            If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
if msgbox("Would you like to obtain DNS from DHCP?", 4 + 32 + 0, "Obtain DNS from DHCP") = 6 Then
objNetAdapter.SetDNSServerSearchOrder()
End if
objNetAdapter.EnableDHCP()
                objNetAdapter.RenewDHCPLease
If objNetAdapter.DHCPEnabled = True Then
msgbox "IP address has been changed to DHCP obtained"
Else
msgbox "IP address has not been changed to DHCP obtained yet" & vbcrlf & "might be network cable was disconnected" & vbcrlf & "or network adapter was not ready to use.",0 + 48 + 0,"Error!"
End if
            Else
'µÑ駤èÒ IP ¤§·Õè
'µÃǨÊͺ¤èÒ·ÕèÁÕÍÂÙè¡è͹ à¾×è͹Óä»ãªéà»ç¹¤èÒàÃÔèÁµé¹
If Not IsNull(objNetAdapter.IPAddress) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
if (i) = 0 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip1 = "0.0.0.0"
end if
end if
if (i) = 1 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip2 = "0.0.0.0"
end if
end if
Next
End If
'ãÊè¤èÒ IP
strIPAddress = Array(InputBox("Please input IP address (Default is old config)","IP Address",oldip))
If not strIPAddress Then
WScript.Quit(0)
End If
'ãÊè¤èÒ Subnet
strSubnetMask = Array(InputBox("Please input Subnet mask (Default is old config)","Subnet mask",oldsn))
If not strSubnetMask Then
WScript.Quit(0)
End If
'ãÊè¤èÒ Gateway
strGateway = Array(InputBox("Please input default gateway IP address (Default is old config)","Gateway IP",oldgw))
If not strGateway Then
WScript.Quit(0)
End If
'ãÊè¤èÒ DNS
strDNSServerSearchOrder = Array(InputBox("Please input DNS address 0 (Default is old config)","DNS",dnsip1),InputBox("Please input DNS address 1 (Default is old config)","DNS",dnsip2))
If IsEmpty(strDNSServerSearchOrder) Then
msgbox "Please input data value!!",0 + 48 + 0,"Error!"
Wscript.Quit(0)
End If
strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
'µÃǨÊͺ¡ÒõÑ駤èÒáÅÐáÊ´§àÁ¹Ùà¾×èͨѴà¡çº¢éÍÁÙÅ
If errEnable = 0 Then
iftype=inputbox("IP configurations has been changed"& vbcrlf &"Would you like to save to BAT file for reload later?" & vbcrlf & "0 No, I don't want" & vbcrlf & "1 Yes, I want to save for Local" & vbcrlf & "2 Yes, I want to save for Wireless","Save to file options","0")
select case iftype
case 0
Wscript.Quit(0)
case 1
'¨Ñ´à¡çºÊÓËÃѺ local
ipsetting = "@echo off" & vbcrlf & ":: This file was created by Network IP Configuration Tool Version " & pVersion & vbcrlf & "netsh interface ip set address local static " & objNetAdapter.IPAddress(0) &" "& objNetAdapter.IPSubnet(0) &" " & objNetAdapter.DefaultIPGateway(0) & " 1"
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
if (i) = 0 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip1 = "0.0.0.0"
end if
end if
if (i) = 1 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip2 = "0.0.0.0"
end if
end if
Next
End If
ipsetting = ipsetting & vbcrlf & "netsh interface ip set dns local static " & dnsip1 & " primary"
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns local " & dnsip2 & " index=2"
savebat()
case 2
'¨Ñ´à¡çºÊÓËÃѺ Wireless
ipsetting = "@echo off" & vbcrlf & ":: This file was created by Network IP Configuration Tool Version " & pVersion & vbcrlf & "netsh interface ip set address wireless static " & objNetAdapter.IPAddress(0) & " " & objNetAdapter.IPSubnet(0) & " " & objNetAdapter.DefaultIPGateway(0) & " 1"
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
if (i) = 0 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip1 = "0.0.0.0"
end if
end if
if (i) = 1 then
if not isnull(objNetAdapter.DNSServerSearchOrder(i)) Then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
else
dnsip2 = "0.0.0.0"
end if
end if
Next
End If
ipsetting = ipsetting & vbcrlf & "netsh interface ip set dns wireless static " & dnsip1 & " primary"
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns wireless " & dnsip2 & " index=2"
savebat()
end select
Else
msgbox "IP Address has not been changed yet" & vbcrlf & "might be network cable was disconnected" & vbcrlf & "or network adapter was not ready to use.",0 + 48 + 0,"Error!"
End If
End If
End If
End If
Next

'á»Å§¤èÒ WMIDateString à»ç¹ UTCDATE
Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4) & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'à»ÅÕè¹ mac address à»ç¹¢éͤÇÒÁ·ÕèäÁèÁÕ colon
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
'µÃǨÊͺÇèÒÁÕá¿éÁÍÂÙè¡è͹áÅéÇËÃ×ÍäÁè
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
ElseIf MsgBox("File has already exist. Would you like to overwrite it?", 4 + 32 + 256,"Already Exist!") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
End If
End Function

Function savebat()
Set oFilesys = CreateObject("Scripting.FileSystemObject")
sPath = oFilesys.GetAbsolutePathName(InputBox("Please specify filename","Filename","Location") & ".bat")
sFilename = oFilesys.GetFileName(sPath)
'µÃǨÊͺÇèÒÁÕá¿éÁÍÂÙè¡è͹áÅéÇËÃ×ÍäÁè
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
ElseIf MsgBox("File has already exist. Would you like to overwrite it?", 4 + 32 + 256,"Already Exist!") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
End If
End Function
« แก้ไขครั้งสุดท้าย: 29 ธันวาคม 2007, 20:03:09 โดย ทัชชี่น่ารัก »

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #12 เมื่อ: 30 ธันวาคม 2007, 15:23:40 »
พอดีเลย นึกขึ้นได้ว่า กำลัง สอนคนที่ไม่ค่อยเป็น คอม อยู่ จะให้เค้าช่วย set ip ให้น่ะครับ คงจะได้เอาไปใช้ล่ะ ขอบคุณครับ

พอดีจะถามต่อว่าใช้กับ vista ได้รึป่าว แล้วก็นั่งมองโค๊ดให้ละเอียดอีกที ก็เห็นตรงหัวว่า on Windows 2000/xp/2003/vista ก็แสดงว่า ได้ หุ หุ

ขอบคุณอีกทีครับ
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

JumPAlone

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #13 เมื่อ: 2 มกราคม 2008, 04:06:50 »
ขอบคุณมากครับ
ไม่ค่อยรู้เรื่องแหะ  :P
 O0

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #14 เมื่อ: 7 มกราคม 2008, 11:02:56 »
มาอัพเดทเวอร์ชั่นครับ...
ตอนนี้เป็นเวอร์ชั่น ๒.๑ ครับ ยังมีทั้งไทยและอังกฤษเช่นเดิม สิ่งที่เพิ่มเติมและแก้ไขก็คือ
๑. เพิ่มการ support WINS server (สามารถละเว้น ไม่ต้องใส่ก็ได้)
๒. แก้ไขข้อผิดพลาดในรุ่น ๒.๐ เรื่องการจัดเก็บข้อมูลลงแฟ้ม
๓. สนับสนุนการใช้ DNS server ได้ถึง ๓ IP

ข้อตกลงในการใช้งาน
ผู้ใช้ที่คัดลอกหรือดาวน์โหลดสคริปต์นี้ไปใช้ต้องยอมรับความเสี่ยงต่อความเสียหายที่อาจเกิดขึ้นเอง ความผิดพลาดใดๆ ที่เกิดจากการใช้งานสคริปต์นี้ ผู้เขียนของดเว้นการรับผิดชอบ หากมีคำถามใดๆ กรุณาสอบถามในกระทู้นี้

code และ สามารถดาวน์โหลดได้ข้างล่างครับ
โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration tool
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Use for change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip.vbs
'ประวัติการออกรุ่น
'1.0 รุ่นแรกเริ่ม
'- สามารถเลือกโหมดได้
'- สามารถแสดงชื่อการ์ดและหมายเลขแม็ค
'1.1 แปลเป็นภาษาไทย
'- สามารถตั้งค่า DNS ได้
'- เพิ่มการตรวจสอบข้อผิดพลาด
'1.5 เพิ่มความสามารถที่หลากหลายมากขึ้น
'- สามารถแสดง ip และตัวเลือกของ DHCP ได้โดยอัตโนมัติ
'- เพิ่มการตรวจสอบข้อผิดพลาดสำหรับการป้อนค่า ip คงที่
'1.6 เขียนลงแฟ้ม
'- เพิ่มความสามารถเขียนลงแฟ้มเพื่อตรวจดูในภายหลัง
'1.7 เพิ่มการตรวจสอบแฟ้ม
'- เพิ่มการตรวจสอบแฟ้มที่มีอยู่ก่อน ผู้ใช้สามารถยกเลิกการเขียนทับได้
'1.8 เปลี่ยนเงื่อนไข
'- เปลี่ยนเงื่อนไขการป้อนข้อมูล
'- เพิ่มการตรวจสอบข้อผิดพลาดอื่นๆ
'1.9 เพิ่มการตรวจสอบ DNS
'- เพิ่มการตรวจสอบ DNS ก่อนตั้งเป็นค่าเริ่มต้นในการป้อนข้อมูล
'- แก้ไขคำบางคำให้ถูกต้อง
'2.0 สามารถจัดเก็บลงแฟ้ม เพื่อความสะดวกในการเรียกใช้ภายหลัง
'- สามารถจัดเก็บลงแฟ้ม BAT เพื่อสะดวกในการเรียกใช้ภายหลัง
'- สามารถเลือกจัดเก็บได้ทั้ง  local และ wireless
'2.1 สามารถแก้ไข WINS server
'- สามารถแก้ไข/แสดงข้อมูล WINS server ได้
'- ลดบรรทัดการ save file ลง
'- แก้ไขข้อผิดพลาด ในรุ่น 2.0

Dim oFilesys, oFiletxt, sFilename, sPath, ipsetting, midmac
On Error Resume Next

'เมนูการทำงาน
pVersion = "2.1"
iMode = InputBox("Select Mode:" & vbcrlf & "0 Query interface adapter" & vbcrlf & "1 Setup static IP" & vbcrlf & "2 Setup dynamic IP (DHCP)","Network Interface IP Configuration Tool  V. " & pVersion,"3")

If IsEmpty(iMode) Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 3 Then
msgbox "You are not input data value" & vbcrlf & "or input more value",0 + 48 + 0,"Error!"
WScript.Quit
ElseIf iMode < 3 Then
If iMode > 0 Then
iIndex = InputBox("Please specify adapter index  (Default is 1)" & vbcrlf & "If you could not be known, Please query first","Input adapter index number","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
msgbox "Please input data value!!",0 + 48 + 0,"Error!"
WScript.Quit
End If
End If
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
Case 3
MsgBox "Network Interface IP Configuration Tool  V. "& pVersion & vbcrlf  &"Developer: Pongsathorn Sraouthai" & vbcrlf & "e-mail: pongsathorns@gmail.com" & vbcrlf & "License Type: LGPL",0 + 64 + 0 + 0,"About Me"
WScript.Quit
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
'ตรวจสอบการ์ด
ifq = "Adapter Index = " & objNetAdapter.Index & vbcrlf & "Adapter Name = " & objNetAdapter.Description & vbcrlf & "MAC Address = " & objNetAdapter.MACAddress
ipconfig = " "
'ตรวจสอบ IP
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "IP Address = " & objNetAdapter.IPAddress(i)
Next
End If
'ตรวจสอบ Subnet
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & vbcrlf & "Subnet = " & objNetAdapter.IPSubnet(i)
Next
End If
'ตรวจสอบ Gateway
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & vbcrlf & "Default Gateway = " & objNetAdapter.DefaultIPGateway(i)
Next
End If
'ตรวจสอบ DNS
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & vbcrlf &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
Next
End If
ifq = ifq & vbcrlf & ipconfig
'ตรวจสอบ DHCP
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "DHCP Enable = " & objNetAdapter.DHCPEnabled & vbcrlf & "DHCP Server = " & objNetAdapter.DHCPServer
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & vbcrlf & "DHCP Lease obtained = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & vbcrlf & "DHCP Lease expires = " & strLeaseExpires
End If
winsuse = " "
If Not objNetAdapter.WINSEnableLMHostsLookup = False then
winsuse = "WINS Enable LMHosts Lookup = " & objNetAdapter.WINSEnableLMHostsLookup
winsuse = winsuse & vbcrlf & "WINS Host Lookup File = " & objNetAdapter.WINSHostLookupFile
winsuse = winsuse & vbcrlf & "WINS Primary Server = " & objNetAdapter.WINSPrimaryServer
winsuse = winsuse & vbcrlf & "WINS Scope ID = " & objNetAdapter.WINSScopeID
End If

ifq = ifq & vbcrlf & dhcpuse & vbcrlf & winsuse
msgbox ifq, 0 + 64 + 0 + 0, "Adapter Information"
if MsgBox("Would you like to write this information to file?", 4 + 32 + 256, "Save Info") = 6 Then
savetofile()
End If
Else
If objNetAdapter.Index = iIndex Then
'ตั้งค่า IP เป็น DHCP
            If blnDHCPEnabled = True Then
If objNetAdapter.DHCPEnabled = True Then
objNetAdapter.ReleaseDHCPLease()
End if
if msgbox("Would you like to obtain DNS from DHCP?", 4 + 32 + 0, "Obtain DNS from DHCP") = 6 Then
objNetAdapter.SetDNSServerSearchOrder()
End if
objNetAdapter.EnableDHCP()
                objNetAdapter.RenewDHCPLease
If objNetAdapter.DHCPEnabled = True Then
msgbox "IP address has been changed to DHCP obtained"
Else
msgbox "IP address has not been changed to DHCP obtained yet" & vbcrlf & "might be network cable was disconnected" & vbcrlf & "or network adapter was not ready to use.",0 + 48 + 0,"Error!"
End if
            Else
'ตั้งค่า IP คงที่
'ตรวจสอบค่าที่มีอยู่ก่อน เพื่อนำไปใช้เป็นค่าเริ่มต้น
If Not IsNull(objNetAdapter.IPAddress(0)) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet(0)) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway(0)) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
If (i) = 0 Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip1) Then
dnsip1 = "0.0.0.0"
end If
end If
if (i) = 1 then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip2) Then
dnsip2 = "0.0.0.0"
end if
end if
if (i) = 2 then
dnsip3 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip3) Then
dnsip3 = "0.0.0.0"
end if
end if
Next
End If
If Not IsNull(objNetAdapter.WINSPrimaryServer) Then
oldwns = objNetAdapter.WINSPrimaryServer
Else
oldwns = "0.0.0.0"
End if
'ใส่ค่า IP
strIPAddress = Array(InputBox("Please input IP address (Default is old config)" & vbcrlf &"Example: 192.168.0.10","IP Address",oldip))
If IsNull(strIPAddress) Then
WScript.Quit(0)
End If
'ใส่ค่า Subnet
strSubnetMask = Array(InputBox("Please input Subnet mask (Default is old config)" & vbcrlf &"Example: 255.255.255.0","Subnet mask",oldsn))
If IsNull(strSubnetMask) Then
WScript.Quit(0)
End If
'ใส่ค่า Gateway
strGateway = Array(InputBox("Please input default gateway IP address (Default is old config)" & vbcrlf &"Example: 192.168.0.254","Gateway IP",oldgw))
If IsNull(strGateway) Then
WScript.Quit(0)
End If
'ใส่ค่า DNS
dnsIPselect = inputbox("Please select number of DNS Server IP" & vbCrLf&"0 No DNS Server" & vbCrLf &"1 Server" & vbCrLf & "2 Servers" & vbCrLf & "3 Servers","DNS Server number","2")
Select Case dnsIPselect
  Case 0
MsgBox "No DNS server", 64, "No server"
  Case 1
strDNSServerSearchOrder = Array(InputBox("Please input DNS address 0 (Default is old config)" & vbcrlf &"Example: 192.168.0.1","DNS",dnsip1))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case 2
strDNSServerSearchOrder = Array(InputBox("Please input DNS address 0 (Default is old config)" & vbcrlf &"Example: 192.168.0.1","DNS",dnsip1),InputBox("Please input DNS address 1 (Default is old config)" & vbcrlf &"Example: 192.168.0.2","DNS",dnsip2))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case 3
strDNSServerSearchOrder = Array(InputBox("Please input DNS address 0 (Default is old config)" & vbcrlf &"Example: 192.168.0.1","DNS",dnsip1),InputBox("Please input DNS address 1 (Default is old config)" & vbcrlf &"Example: 192.168.0.2","DNS",dnsip2),InputBox("Please input DNS address 2 (Default is old config)" & vbcrlf &"Example: 192.168.0.3","DNS",dnsip3))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case Else
MsgBox "You were not input number of DNS server or input more value!", 48, "Error!"
Wscript.Quit(0)
End Select
'ใส่ค่า WINS
strWINSServer = InputBox("Please input WINS Server ip address" & vbcrlf &"Example: 192.168.0.1" & vbcrlf &"If not need , press cancel.","WINS Server",oldwns)
If Not IsEmpty(strWINSServer) Then
objNetAdapter.SetWINSServer strWINSServer
End If
strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If dnsIPselect <> 0 Then
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
End If

If errEnable = 0 Then
iftype=inputbox("IP configurations has been changed"& vbcrlf &"Would you like to save to BAT file for reload later?" & vbcrlf & "0 No, I don't want" & vbcrlf & "1 Yes, I want to save for Local" & vbcrlf & "2 Yes, I want to save for Wireless","Save to file options","0")
select case iftype
case 0
Wscript.Quit(0)
case 1
ntype = "local"
savebat(ntype)
case 2
ntype = "wireless"
savebat(ntype)
end select
Else
msgbox "IP Address has not been changed yet" & vbcrlf & "might be network cable was disconnected" & vbcrlf & "or network adapter was not ready to use.",0 + 48 + 0,"Error!"
End If
End If
End If
End If
Next

'แปลงค่า WMIDateString เป็น UTCDATE
Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4) & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'เปลี่ยน mac address เป็นข้อความที่ไม่มี colon
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
ElseIf MsgBox("File has already exist. Would you like to overwrite it?", 4 + 32 + 256,"Already Exist!") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile("MAC" & midmac & ".txt", True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
End If
End Function

Function savebat(ntype)

ipaddr = Join(strIPAddress)
snmask = Join(strSubnetMask)
gwaddr = Join(strGateway)

If Not IsNull(strDNSServerSearchOrder) Then
For i = 0 To UBound(strDNSServerSearchOrder)
If (i) = 0 Then
dnsip1 = strDNSServerSearchOrder(i)
end If
if (i) = 1 then
dnsip2 = strDNSServerSearchOrder(i)
end if
if (i) = 2 then
dnsip3 = strDNSServerSearchOrder(i)
end if
Next
End If
If Not IsNull(objNetAdapter.WINSPrimaryServer) Then
wnsaddr = objNetAdapter.WINSPrimaryServer
End if

ipsetting = "@echo off" & vbcrlf & ":: This file was created by Network IP Configuration Tool Version " & pVersion & vbCrLf&":: Developed by Pongsathorn Sraouthai e-mail: pongsathorns@gmail.com"
ipsetting = ipsetting & vbcrlf & "netsh interface ip set address " & ntype &" static " & ipaddr &" "& snmask &" " & gwaddr & " 1"

If Not IsEmpty(dnsip1) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip set dns " & ntype &" static " & dnsip1 & " primary"
End If

If Not IsEmpty(dnsip2) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns " & ntype &" " & dnsip2 & " index=2"
End If

If Not IsEmpty(dnsip3) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns " & ntype &" " & dnsip3 & " index=3"
End If

If Not IsEmpty(strWINSServer) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip set wins " & ntype & " static " & strWINSServer
End If

Set oFilesys = CreateObject("Scripting.FileSystemObject")
sPath = oFilesys.GetAbsolutePathName(InputBox("Please specify filename","Filename","Location") & ".bat")
sFilename = oFilesys.GetFileName(sPath)

If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
ElseIf MsgBox("File has already exist. Would you like to overwrite it?", 4 + 32 + 256,"Already Exist!") = 6 Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "Saved information to file: " & sFilename, 0 + 64 + 0,"Saved"
End if
End If

End Function

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #15 เมื่อ: 7 มกราคม 2008, 11:41:24 »
ขอบคุณอย่างมากมายเลยคับ  :)
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ตั้ม

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #16 เมื่อ: 3 มีนาคม 2008, 12:59:39 »
ลองกับ vista   แล้ว  หลังจากที่คลิกให้ทำงานแล้ว   เงียบหายไปเลย
ไม่มีการตอบสนองอะไรทั้งสิ้นคะ


ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #17 เมื่อ: 16 มีนาคม 2008, 02:22:47 »
ลองกับ vista   แล้ว  หลังจากที่คลิกให้ทำงานแล้ว   เงียบหายไปเลย
ไม่มีการตอบสนองอะไรทั้งสิ้นคะ



ลองตั้ง user อยู่ใน group admin หรือยังครับ?

แล้วอย่าลืมดูตัว antivirus ของคุณด้วยนะครับ ว่ามัน block การรันสคริปต์หรือเปล่า...
« แก้ไขครั้งสุดท้าย: 10 เมษายน 2008, 19:09:29 โดย ทัชชี่น่ารัก »

gooboat

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #18 เมื่อ: 18 เมษายน 2008, 23:40:58 »
ควรค่ากับการศึกษา ขอบคุณครับ  :D :D :D :D :D

ออฟไลน์ franket

  • **
  • 625
  • 4
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #19 เมื่อ: 19 เมษายน 2008, 14:59:54 »
ตรง

'ตรวจสอบ Gateway
      If Not IsNull(objAdapter.DefaultIPGateway) Then


น่าจะเป็น

'ตรวจสอบ Gateway
      If Not IsNull(objNetAdapter.DefaultIPGateway) Then

รึป่าวอ่ะ แต่เท่าที่ลอง ๆ รันดูก็ไม่ค่อยต่างกันนะ หุ หุ แต่ถ้าเอา

On Error Resume Next

ออก ก็จะเจอ Error เลยอ่ะ หุ หุ พอดีว่าวันนี้ลองเอาโค๊ดมานั่งเล่นดูน่ะ ก็เลยเจอ อิ อิ :)
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #20 เมื่อ: 23 เมษายน 2008, 16:38:36 »
โค๊ด: [Select]
'************************************************************************************
'Network interface IP Configuration with Thai interface
'by Pongsathorn Sraouthai (pongsathorns@gmail.com)
'Use for change ip configuration for network interface on Windows 2000/xp/2003/vista
'************************************************************************************
'ch_ip_thai.vbs
'ประวัติการออกรุ่น
'1.0 รุ่นแรกเริ่ม
'- สามารถเลือกโหมดได้
'- สามารถแสดงชื่อการ์ดและที่อยู่แม็ค
'1.1 แปลเป็นภาษาไทย
'- สามารถตั้งค่า DNS ได้
'- เพิ่มการตรวจสอบข้อผิดพลาด
'1.5 เพิ่มความสามารถที่หลากหลายมากขึ้น
'- สามารถแสดง ip และตัวเลือกของ DHCP ได้โดยอัตโนมัติ
'- เพิ่มการตรวจสอบข้อผิดพลาดสำหรับการป้อนค่า ip คงที่
'1.6 เขียนลงแฟ้ม
'- เพิ่มความสามารถเขียนลงแฟ้มเพื่อตรวจดูในภายหลัง
'1.7 เพิ่มการตรวจสอบแฟ้ม
'- เพิ่มการตรวจสอบแฟ้มที่มีอยู่ก่อน ผู้ใช้สามารถยกเลิกการเขียนทับได้
'1.8 เปลี่ยนเงื่อนไข
'- เปลี่ยนเงื่อนไขการป้อนข้อมูล
'- เพิ่มการตรวจสอบข้อผิดพลาดอื่นๆ
'1.9 เพิ่มการตรวจสอบ DNS
'- เพิ่มการตรวจสอบ DNS ก่อนตั้งเป็นค่าเริ่มต้นในการป้อนข้อมูล
'- แก้ไขคำบางคำให้ถูกต้อง
'2.0 สามารถจัดเก็บลงแฟ้ม เพื่อความสะดวกในการเรียกใช้ภายหลัง
'- สามารถจัดเก็บลงแฟ้ม BAT เพื่อสะดวกในการเรียกใช้ภายหลัง
'- สามารถเลือกจัดเก็บได้ทั้ง  local และ wireless
'2.1 สามารถแก้ไข WINS server
'- สามารถแก้ไข/แสดงข้อมูล WINS server ได้
'- ลดบรรทัดการ save file ลง
'- แก้ไขข้อผิดพลาด ในรุ่น 2.0
'2.2 จัดค่า dhcp ลงแฟ้ม
'- สามารถจัดเก็บค่าของ dhcp ลงแฟ้ม
'- แก้ไขข้อผิดพลาดของรุ่น 2.1
'- เพิ่มตัวเลือกเวลาจัดเก็บค่าลงแฟ้ม

Dim oFilesys, oFiletxt, sFilename, sPath, ipsetting, midmac
On Error Resume Next

'เมนูการทำงาน
pVersion = "2.2"
iMode = InputBox("เลือกวาระการทำงาน" & vbcrlf & "0 ตรวจสอบข้อมูลการ์ด" & vbcrlf & "1 ตั้งค่า IP คงที่" & vbcrlf & "2 ตั้งค่า IP แปรผัน (DHCP)","โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น " & pVersion,"3")

If IsEmpty(iMode) Then
WScript.Quit
Else
'แปลง string เป็น integer
iMode = CInt(iMode)

'ตรวจสอบการเข้าเมนู
If iMode > 3 Then
msgbox "คุณไม่ได้ใส่ข้อมูลในช่อง" & vbcrlf & "หรือใส่มากเกินไป",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
ElseIf iMode < 3 Then
If iMode > 0 Then
iIndex = InputBox("กรุณาใส่หมายเลขการ์ด  (ค่าเริ่มต้น คือ 1)" & vbcrlf & "ถ้าคุณไม่รู้ กรุณาตรวจสอบก่อน","ใส่หมายเลขการ์ด","1")
If Not IsEmpty(iIndex) then
iIndex = CInt(iIndex)
Else
msgbox "กรุณาใส่ข้อมูลในช่องด้วย",0 + 48 + 0,"ผิดพลาด"
WScript.Quit
End If
End If
End If
End if

'เรียกค่าจาก WMI
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

'เลือกค่าจากเมนู
Select Case iMode
    Case 0
        blnQuery = True
    Case 1
        blnDHCPEnabled = False
    Case 2
        blnDHCPEnabled = True
Case 3
MsgBox "โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น "& pVersion & vbcrlf  &"ผู้พัฒนา: พงศธรณ์ สระอุทัย" & vbcrlf & "e-mail: pongsathorns@gmail.com" & vbcrlf & "ชนิดสัญญาอนุญาต: LGPL",0 + 64 + 0 + 0,"เกี่ยวกับผู้พัฒนา"
WScript.Quit
End Select

For Each objNetAdapter in colNetAdapters
If blnQuery Then
'ตรวจสอบการ์ด
ifq = "หมายเลขการ์ด = " & objNetAdapter.Index & vbcrlf & "ชื่อการ์ด = " & objNetAdapter.Description & vbcrlf & "หมายเลข MAC= " & objNetAdapter.MACAddress
ipconfig = " "
'ตรวจสอบ IP
If Not IsNull(objNetAdapter.IPAddress) Then
For i = 0 To UBound(objNetAdapter.IPAddress)
ipconfig = "หมายเลข IP = " & objNetAdapter.IPAddress(i)
ipsrc = objNetAdapter.IPAddress(i)
Next
End If
'ตรวจสอบ Subnet
If Not IsNull(objNetAdapter.IPSubnet) Then
For i = 0 To UBound(objNetAdapter.IPSubnet)
ipconfig = ipconfig & vbcrlf & "Subnet = " & objNetAdapter.IPSubnet(i)
snsrc = objNetAdapter.IPSubnet(i)
Next
End If
'ตรวจสอบ Gateway
If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objNetAdapter.DefaultIPGateway)
ipconfig = ipconfig & vbcrlf & "เกตเวย์เริ่มต้น = " & objNetAdapter.DefaultIPGateway(i)
gwsrc = objNetAdapter.DefaultIPGateway(i)
Next
End If
'ตรวจสอบ DNS
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
ipconfig = ipconfig & vbcrlf &  "DNS " & (i) & " = " & objNetAdapter.DNSServerSearchOrder(i)
if objNetAdapter.DNSServerSearchOrder(i) = 1 then
dnssrc1 = objNetAdapter.DNSServerSearchOrder(i)
end if
if objNetAdapter.DNSServerSearchOrder(i) = 2 then
dnssrc2 = objNetAdapter.DNSServerSearchOrder(i)
end if
if objNetAdapter.DNSServerSearchOrder(i) = 3 then
dnssrc3 = objNetAdapter.DNSServerSearchOrder(i)
end if
Next
End If
ifq = ifq & vbcrlf & ipconfig
'ตรวจสอบ DHCP
dhcpuse = " "
if Not objNetAdapter.DHCPEnabled = False then
dhcpuse = "ใช้งานเป็น DHCP = ใช่" & vbcrlf & "เซิฟเวอร์ DHCP = " & objNetAdapter.DHCPServer
dhcpsrc = "source=dhcp"
End If
If Not IsNull(objNetAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objNetAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
  dhcpuse = dhcpuse & vbcrlf & "รับค่า DHCP เมื่อ = " & strLeaseObtained
End If
If Not IsNull(objNetAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objNetAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
dhcpuse = dhcpuse & vbcrlf & "ค่า DHCP หมดอายุเมื่อ = " & strLeaseExpires
End If
winsuse = " "
If Not objNetAdapter.WINSEnableLMHostsLookup = False then
winsuse = "ใช้งาน LMHosts Lookup ใน WINS = ใช่"
winsuse = winsuse & vbcrlf & "แฟ้ม Host Lookup ของ WINS = " & objNetAdapter.WINSHostLookupFile
winsuse = winsuse & vbcrlf & "เซิฟเวอร์หลัก WINS = " & objNetAdapter.WINSPrimaryServer
winsuse = winsuse & vbcrlf & "ชื่อขอบเขต WINS = " & objNetAdapter.WINSScopeID
winssrc = objNetAdapter.WINSPrimaryServer
End If

ifq = ifq & vbcrlf & dhcpuse & vbcrlf & winsuse
msgbox ifq, 0 + 64 + 0, "ข้อมูลการ์ด"
'เลือกการจัดเก็บข้อมูล
if MsgBox("คุณต้องการเขียนข้อมูลลงแฟ้มหรือไม่?", 4 + 32 + 256, "จัดเก็บข้อมูล") = 6 Then
savetofile()
End If
    Else
If objNetAdapter.Index = iIndex Then
'ตั้งค่า IP เป็น DHCP
            If blnDHCPEnabled = True Then
objNetAdapter.EnableDHCP()
dnsdhcp = ""
if msgbox("ต้องการเปลี่ยน DNS ให้รับค่าจาก DHCP หรือไม่?", 4 + 32 + 0, "รับค่า DNS จาก DHCP") = 6 Then
dnsdhcp = "yes"
objNetAdapter.SetDNSServerSearchOrder()
End if
objNetAdapter.ReleaseDHCPLease()
                objNetAdapter.RenewDHCPLease
If objNetAdapter.DHCPEnabled = True Then
iftype=inputbox("ได้ทำการเปลี่ยน IP เป็นแบบ DHCP เรียบร้อยแล้ว"& vbcrlf &"ต้องการจัดเก็บลงแฟ้มเพื่อความสะดวกในการเรียกใช้ในภายหลังหรือไม่?" & vbcrlf & "1 ไม่ต้องการจัดเก็บ" & vbcrlf & "2 ต้องการจัดเก็บไว้สำหรับ Local" & vbcrlf & "3 ต้องการจัดเก็บไว้สำหรับ Wireless","ตัวเลือกในการจัดเก็บ","0")
select case iftype
case 1
Wscript.Quit(0)
case 2
ntype = "local"
savedhcp(ntype)
case 3
ntype = "wireless"
savedhcp(ntype)
Case Else
Wscript.Quit(0)
end select
Else
msgbox "IP เปลี่ยนมาใช้เป็น DHCP ไม่สมบูรณ์" & vbcrlf & "อาจจะเป็นไปได้ว่า สายเชื่อมต่อเครือข่าย ไม่ได้ต่ออยู่" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End if
            Else
'ตั้งค่า IP คงที่
'ตรวจสอบค่าที่มีอยู่ก่อน เพื่อนำไปใช้เป็นค่าเริ่มต้น
If Not IsNull(objNetAdapter.IPAddress(0)) Then
oldip = objNetAdapter.IPAddress(0)
Else
oldip = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.IPSubnet(0)) Then
oldsn = objNetAdapter.IPSubnet(0)
Else
oldsn = "255.255.255.0"
End If
If Not IsNull(objNetAdapter.DefaultIPGateway(0)) Then
oldgw = objNetAdapter.DefaultIPGateway(0)
Else
oldgw = "0.0.0.0"
End If
If Not IsNull(objNetAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objNetAdapter.DNSServerSearchOrder)
If (i) = 0 Then
dnsip1 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip1) Then
dnsip1 = "0.0.0.0"
end If
end If
if (i) = 1 then
dnsip2 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip2) Then
dnsip2 = "0.0.0.0"
end if
end if
if (i) = 2 then
dnsip3 = objNetAdapter.DNSServerSearchOrder(i)
If IsEmpty(dnsip3) Then
dnsip3 = "0.0.0.0"
end if
end if
Next
End If
If Not IsNull(objNetAdapter.WINSPrimaryServer) Then
oldwns = join(objNetAdapter.WINSPrimaryServer)
Else
oldwns = "0.0.0.0"
End if
'ใส่ค่า IP
strIPAddress = Array(InputBox("กรุณาใส่หมายเลข IP (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.10","หมายเลข IP",oldip))
If IsNull(strIPAddress) Then
WScript.Quit(0)
End If
'ใส่ค่า Subnet
strSubnetMask = Array(InputBox("กรุณาใส่ Subnet mask (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 255.255.255.0","Subnet mask",oldsn))
If IsNull(strSubnetMask) Then
WScript.Quit(0)
End If
'ใส่ค่า Gateway
strGateway = Array(InputBox("กรุณาใส่หมายเลข IP เกตเวย์ (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.254","Gateway IP",oldgw))
If IsNull(strGateway) Then
WScript.Quit(0)
End If
'ใส่ค่า DNS
dnsIPselect = inputbox("กรุณาเลือกจำนวน IP ของ DNS Server" & vbCrLf& "0 ไม่มีเซิฟเวอร์ DNS" & vbCrLf &"1 จำนวน 1 เครื่อง" & vbCrLf & "2 จำนวน 2 เครื่อง " & vbCrLf & "3 จำนวน 3 เครื่อง","จำนวนเซิฟเวอร์ DNS","2")
Select Case dnsIPselect
  Case 0
MsgBox "ไม่มีเซิฟเวอร์ DNS", 64, "ไม่มีเซิฟเวอร์"
  Case 1
strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.1","DNS",dnsip1))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case 2
strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.1","DNS",dnsip1),InputBox("กรุณาใส่หมายเลข IP DNS 1 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.2","DNS",dnsip2))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case 3
strDNSServerSearchOrder = Array(InputBox("กรุณาใส่หมายเลข IP DNS 0 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.1","DNS",dnsip1),InputBox("กรุณาใส่หมายเลข IP DNS 1 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.2","DNS",dnsip2),InputBox("กรุณาใส่หมายเลข IP DNS 2 (ค่าเริ่มต้นคือค่าเดิม)" & vbcrlf &"ตัวอย่าง: 192.168.0.3","DNS",dnsip3))
If IsNull(strDNSServerSearchOrder) Then
Wscript.Quit(0)
End If
  Case Else
MsgBox "คุณไม่ได้ใส่ข้อมูลเลือกเซิฟเวอร์ DNS หรือ ใส่ตัวเลขมากเกินไป", 48, "ผิดพลาด"
Wscript.Quit(0)
End Select
'ใส่ค่า WINS
strWINSServer = InputBox("กรุณาใส่หมายเลข IP เซิฟเวอร์ WINS" & vbcrlf &"ตัวอย่าง: 192.168.0.1" & vbcrlf &"ถ้าไม่ใช้ กรุณากด cancel.","เซิฟเวอร์ WINS",oldwns)
If Not IsEmpty(strWINSServer) Then
objNetAdapter.SetWINSServer strWINSServer
End If
strGatewayMetric = Array(1)
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If dnsIPselect <> 0 Then
objNetAdapter.SetDNSServerSearchOrder(strDNSServerSearchOrder)
End If
'ตรวจสอบการตั้งค่าและแสดงเมนูเพื่อจัดเก็บข้อมูล
If errEnable = 0 Then
iftype=inputbox("ได้ทำการเปลี่ยนหมายเลข IP เรียบร้อยแล้ว"& vbcrlf &"ต้องการจัดเก็บลงแฟ้มเพื่อความสะดวกในการเรียกใช้ในภายหลังหรือไม่?" & vbcrlf & "1. ไม่ต้องการจัดเก็บ" & vbcrlf & "2. ต้องการจัดเก็บไว้สำหรับ Local" & vbcrlf & "3. ต้องการจัดเก็บไว้สำหรับ Wireless","ตัวเลือกในการจัดเก็บ","1")
select case iftype
case 1
Wscript.Quit(0)
case 2
ntype = "local"
savebat(ntype)
case 3
ntype = "wireless"
savebat(ntype)
Case Else
Wscript.Quit(0)
end select
Else
msgbox "การเปลี่ยนหมายเลข IP ไม่สมบูรณ์" & vbcrlf & "อาจเป็นไปได้ว่า สายเครือข่ายไม่ได้เชื่อมต่อ" & vbcrlf & "หรือการ์ดเครือข่ายไม่พร้อมทำงาน",0 + 48 + 0,"ผิดพลาด"
End If
            End If
End If
End If
Next

'แปลงค่า WMIDateString เป็น UTCDATE
Function WMIDateStringToDate(utcDate)
   WMIDateStringToDate = CDate(Mid(utcDate, 7, 2) & "/" & Mid(utcDate, 5, 2) & "/" & Left(utcDate, 4)+543 & " " & Mid (utcDate, 9, 2) & ":" & Mid(utcDate, 11, 2) & ":" & Mid(utcDate, 13, 2))
End Function

Function savetofile()
ifq = "ข้อมูลการ์ด" & vbcrlf & "สร้างโดย โปรแกรมโปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น " & pVersion & vbCrLf &"พัฒนาโดย พงศธรณ์ สระอุทัย e-mail: pongsathorns@gmail.com" & vbcrlf & ifq
Set oFilesys = CreateObject("Scripting.FileSystemObject")
'เปลี่ยน mac address เป็นข้อความที่ไม่มี colon
midmac = Mid(objNetAdapter.MACAddress,1,2) & mid(objNetAdapter.MACAddress,4,2) & mid(objNetAdapter.MACAddress,7,2) & mid(objNetAdapter.MACAddress,10,2) & mid(objNetAdapter.MACAddress,13,2) & mid(objNetAdapter.MACAddress,16,2)
sPath = oFilesys.GetAbsolutePathName("MAC" & midmac & ".txt")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
Else
'ถ้าพบแฟ้มอยู่ก่อนแล้วจะทำอย่างไร
oFilexist = InputBox("ตรวจพบแฟ้มชื่อเดียวกัน มีอยู่ก่อนแล้ว คุณต้องการเขียนทับหรือไม่"& vbcrlf & "1. เขียนทับแฟ้มเดิม" & vbcrlf & "2. ตั้งชื่อแฟ้มใหม่" & vbcrlf & "3. ไม่จัดเก็บลงแฟ้ม","พบแฟ้มมีอยู่ก่อนแล้ว","2")
Select Case oFilexist
Case 1
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 2
sPath = oFilesys.GetAbsolutePathName(InputBox("กรุณาตั้งชื่อแฟ้มใหม่","ชื่อแฟ้ม",sPath) & ".bat")
sFilename = oFilesys.GetFileName(sPath)
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ifq)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 3
MsgBox "ข้อมูลยังไม่ได้ถูกจัดเก็บลงแฟ้ม" & vbcrlf & "กรุณาเรียกใช้โปรแกรมอีกครั้ง", 48, "ข้อควรระวัง"
Wscript.Quit(0)
Case Else
Wscript.Quit(0)
End Select
End If
End Function

Function savedhcp(ntype)

ipsetting = "@echo off" & vbcrlf & ":: แฟ้มนี้ได้ถูกสร้างโดย โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น " & pVersion & vbCrLf&":: พัฒนาโดย พงศธรณ์ สระอุทัย e-mail: pongsathorns@gmail.com"
ipsetting = ipsetting & vbcrlf & "netsh interface ip set address " & ntype &" source=dhcp"

If Not IsEmpty(dnsdhcp) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip set dns " & ntype &" source=dhcp"
ipsetting = ipsetting & vbcrlf & "netsh interface ip set wins " & ntype & " source=dhcp"
End If

MsgBox ipsetting, 64, "ข้อมูลที่จะเขียนลงแฟ้ม"
Set oFilesys = CreateObject("Scripting.FileSystemObject")
sPath = oFilesys.GetAbsolutePathName(InputBox("กรุณาตั้งชื่อแฟ้ม","ชื่อแฟ้ม","สถานที่") & ".bat")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
Else
'ถ้าพบแฟ้มอยู่ก่อนแล้วจะทำอย่างไร
oFilexist = InputBox("ตรวจพบแฟ้มชื่อเดียวกัน มีอยู่ก่อนแล้ว คุณต้องการเขียนทับหรือไม่"& vbcrlf & "1. เขียนทับแฟ้มเดิม" & vbcrlf & "2. ตั้งชื่อแฟ้มใหม่" & vbcrlf & "3. ไม่จัดเก็บลงแฟ้ม","พบแฟ้มมีอยู่ก่อนแล้ว","2")
Select Case oFilexist
Case 1
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 2
sPath = oFilesys.GetAbsolutePathName(InputBox("กรุณาตั้งชื่อแฟ้มใหม่","ชื่อแฟ้ม",sPath) & ".bat")
sFilename = oFilesys.GetFileName(sPath)
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 3
MsgBox "ข้อมูลยังไม่ได้ถูกจัดเก็บลงแฟ้ม" & vbcrlf & "กรุณาเรียกใช้โปรแกรมอีกครั้ง", 48, "ข้อควรระวัง"
Wscript.Quit(0)
Case Else
Wscript.Quit(0)
End Select
End If
End Function

Function savebat(ntype)

ipaddr = Join(strIPAddress)
snmask = Join(strSubnetMask)
gwaddr = Join(strGateway)

If Not IsNull(strDNSServerSearchOrder) Then
For i = 0 To UBound(strDNSServerSearchOrder)
If (i) = 0 Then
dnsip1 = strDNSServerSearchOrder(i)
end If
if (i) = 1 then
dnsip2 = strDNSServerSearchOrder(i)
end if
if (i) = 2 then
dnsip3 = strDNSServerSearchOrder(i)
end if
Next
End If

If Not IsNull(objNetAdapter.WINSPrimaryServer) Then
wnsaddr = objNetAdapter.WINSPrimaryServer
End if

    ipsetting = "@echo off" & vbcrlf & ":: แฟ้มนี้ได้ถูกสร้างโดย โปรแกรมตั้งค่า IP เชื่อมต่อเครือข่าย รุ่น " & pVersion & vbCrLf&":: พัฒนาโดย พงศธรณ์ สระอุทัย e-mail: pongsathorns@gmail.com"
ipsetting = ipsetting & vbcrlf & "netsh interface ip set address " & ntype &" static " & ipaddr &" "& snmask &" " & gwaddr & " 1"

If Not IsEmpty(dnsip1) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip set dns " & ntype &" static " & dnsip1 & " primary"
End If

If Not IsEmpty(dnsip2) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns " & ntype &" " & dnsip2 & " index=2"
End If

If Not IsEmpty(dnsip3) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip add dns " & ntype &" " & dnsip3 & " index=3"
End If

If Not IsEmpty(strWINSServer) then
ipsetting = ipsetting & vbcrlf & "netsh interface ip set wins " & ntype & " static " & wnsaddr
End If
MsgBox ipsetting, 64, "ข้อมูลที่จะเขียนลงแฟ้ม"
Set oFilesys = CreateObject("Scripting.FileSystemObject")
sPath = oFilesys.GetAbsolutePathName(InputBox("กรุณาตั้งชื่อแฟ้ม","ชื่อแฟ้ม","สถานที่") & ".bat")
sFilename = oFilesys.GetFileName(sPath)
'ตรวจสอบว่ามีแฟ้มอยู่ก่อนแล้วหรือไม่
If not oFilesys.FileExists(sPath) Then
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End if
Else
'ถ้าพบแฟ้มอยู่ก่อนแล้วจะทำอย่างไร
oFilexist = InputBox("ตรวจพบแฟ้มชื่อเดียวกัน มีอยู่ก่อนแล้ว คุณต้องการเขียนทับหรือไม่"& vbcrlf & "1. เขียนทับแฟ้มเดิม" & vbcrlf & "2. ตั้งชื่อแฟ้มใหม่" & vbcrlf & "3. ไม่จัดเก็บลงแฟ้ม","พบแฟ้มมีอยู่ก่อนแล้ว","2")
Select Case oFilexist
Case 1
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 2
sPath = oFilesys.GetAbsolutePathName(InputBox("กรุณาตั้งชื่อแฟ้มใหม่","ชื่อแฟ้ม",sPath) & ".bat")
sFilename = oFilesys.GetFileName(sPath)
Set oFiletxt = oFilesys.CreateTextFile(sPath, True)
oFiletxt.WriteLine(ipsetting)
oFiletxt.Close
If oFilesys.FileExists(sPath) Then
MsgBox "ได้จัดเก็บข้อมูลไว้ที่แฟ้ม " & sFilename, 0 + 64 + 0,"จัดเก็บข้อมูล"
End If
Case 3
MsgBox "ข้อมูลยังไม่ได้ถูกจัดเก็บลงแฟ้ม" & vbcrlf & "กรุณาเรียกใช้โปรแกรมอีกครั้ง", 48, "ข้อควรระวัง"
Wscript.Quit(0)
Case Else
Wscript.Quit(0)
End Select
End If
End Function



ออฟไลน์ Slim

  • *****
  • 242
  • 3
  • TH@min Membership
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #21 เมื่อ: 23 เมษายน 2008, 16:58:20 »
โห สุด ๆ อ่ะ
 O0
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

mu_kapong

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #22 เมื่อ: 21 กุมภาพันธ์ 2009, 09:48:52 »
ขอบคุณมากมาย... มีประโยชน์ ใช้ได้จริง ,ศึกษาเป็นแนวทาง, ต่อยอดได้  O0

testrun09

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #23 เมื่อ: 27 มีนาคม 2009, 13:42:53 »
ขอบคุณคับ O0 O0 O0 O0

ออฟไลน์ nettruder

  • *
  • 36
  • 0
  • เพศ: ชาย
  • Never Forget You
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #24 เมื่อ: 8 เมษายน 2009, 13:34:31 »
สะดวกขึ้นมากมายครับพี่น้อง very good ยอดเยี่ยมครับ
<b>Starting CCIE-R&S with Dynamips</b>

RiskBreaker

Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #25 เมื่อ: 12 เมษายน 2009, 13:06:58 »
ขอบคุณมากครับ เป็นแนวทางเลย
ผมกำลังทำหัวข้อเอกเทศเปลี่ยน IP โดยใช้ Visual Basic 6.0

แต่ มีปัญหาตรงที่หาตัวอย่างเซฟและโหลดข้อมูลจาก textfile ยังไม่ได้ เพื่อที่จะได้จดจำ IP ที่เราเคยเซ็ตลงไปเก็บไว้เผื่อจะได้เรียกขึ้นมาดู
ใครมีแนวทางหรือเว็บรบกวนแนะนำทีครับ

msn : shiroh_amurez@hotmail.com

ออฟไลน์ authority

  • **
  • 66
  • 0
  • TH@min Membership
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #26 เมื่อ: 13 เมษายน 2009, 11:01:43 »
สุดยอด ครับ    ขอบคุณมากครับ
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

ออฟไลน์ The illegal !!!

  • *****
  • 9
  • 0
  • เพศ: ชาย
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #27 เมื่อ: 15 เมษายน 2009, 11:40:11 »
เก่งมากเลยครับ ขอบคุณมากครับ
แต่มีปัญหานิดนึงครับ พบ run script แล้ว ไม่มีให้ตั้งค่า Gateway อ่ะครับ มันข้ามไปที่ DNS เลยอ่ะครับ

Thank you....

ออฟไลน์ ทัชชี่น่ารัก

  • *****
  • 961
  • 39
  • เพศ: ชาย
  • The Friendship for You can Touch
    • ทัชชี่
Re: สคริปต์เปลี่ยน ip แบบ flexible ที่สุด
« ตอบกลับ #28 เมื่อ: 11 ธันวาคม 2013, 16:00:28 »
เพิ่มเวอร์ชั่น 2.3 ครับ

โดยรวมจะเหมือนกับ 2.2 แต่จะแก้ไขบั๊กนิดหน่อยครับ