Tuesday, November 18, 2008

How to force client dhcp lease expire (change dhcp lease expiration)

I need to make all my windows dhcp lease to be expire because i need to set a new gateway for our office network. I ran through all the website but i can't find how the way to change it then suddenly this idea come out in my head. We able to force all clients to renew their dhcp lease with "ipconfig /renew" command than all i need to do is force all clients to execute that command from windows server. I ran this command "psexec \\pcname ipconfig /renew". Done !

To make it easier i create a script so i can change all clients dhcp lease in on single click.

1. Create script to get all clients computer name from network

const FileName ="MachineList.txt"
set cmd = createobject("ADODB.Command")
set cn = createobject("ADODB.Connection")
set rs = createobject("ADODB.Recordset")

cn.open "Provider=ADsDSOObject;"
cmd.activeconnection = cn

set objRoot = getobject("LDAP://RootDSE")

cmd.commandtext = ";(objectCategory=Computer);" & _
"name,operatingsystem,operatingsystemservicepack, operatingsystemversion;subtree"
'**** Bypass 1000 record limitation ****
cmd.properties("page size")=1000

set rs = cmd.execute
set objFSO = createobject("Scripting.FileSystemObject")
set objCSV = objFSO.createtextfile(FileName)

while rs.eof <> true and rs.bof <> true
objcsv.writeline(rs("name"))
rs.movenext
wend

objCSV.Close
cn.close

wscript.echo "Finished"

2. Create script to renew dhcp lease.

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("MachineList.Txt")


Set oFilesys = CreateObject("Scripting.FileSystemObject")
Set oFiletxt = oFilesys.CreateTextFile("C:\Documents and Settings\administrator.AXS\My Documents\chpass script\report.txt", True)

On Error Resume Next

Do Until objTextFile.AtEndOfStream

strComputer = objTextFile.ReadLine


DIM objShell, iReturn
set objShell = wscript.createObject("wscript.shell")
iReturn = objShell.Run("CMD /C c:\Windows\system32\psexec.exe \\"& strComputer &" ipconfig /renew", , True)

If Err.Number <> 0 Then

oFiletxt.WriteLine(strComputer & " - failed")

Err.Clear

Else

oFiletxt.WriteLine(strComputer & " - success")

End If

Loop

wscript.echo "Finished"


First run script to get all the client's computers name than run dhcp renew lease script

0 comments: