文章來源: 聖哥的資訊站 [技術]如何刪除舊的電腦帳戶
如果網域中的電腦常常變更電腦名稱,或者經常有新的電腦加入網域,或者重新安裝網域成員電腦,會造成 Active Directory 中 Computer 容器下的電腦帳戶愈來愈多,以下 script 可以用來處理這個問題:
代碼:
On Error Resume Next Set objOU = GetObject("LDAP://CN=Computers,DC=mcg,DC=com") objOU.Filter = Array("Computer") For Each objComputer in objOU Set objPC = GetObject(objComputer.ADsPath) Set objLastLogon = objPC.Get("lastLogonTimestamp") intLastLogonTime = objLastLogon.HighPart * (2^32) + _ objLastLogon.LowPart intLastLogonTime = intLastLogonTime / (60 * 10000000) intLastLogonTime = intLastLogonTime / 1440 StrTime = intLastLogonTime + #1/1/1601# dtmEndingDate = strTime intDays = DateDiff("d", dtmEndingDate, Now) If (intDays > 60) And (intDays < 90) Then ' 停用 60 天以上到 90 天內未登入的電腦帳戶 WScript.Echo "停用 " & objComputer.CN & " " _ & strTime & " " & Intdays objPC.AccountDisabled = True objPC.SetInfo ElseIf intDays > 90 Then ' 刪除超名 90 天未登入的電腦帳戶 WScript.Echo "刪除 " & objComputer.CN & " " _ & strTime & " " & Intdays objPC.DeleteObject(0) End If Next
引言回覆:
想請問聖哥,我使用您所給予的Script去刪除舊電腦,但是發現,他會連剛加入網域的電腦或是還在線上的電腦帳號都會一起刪除,請問是不是我還需要針對那邊的程式碼進行修改呢?
測試過後, 發現是intLastLogonTime這一段的計算有問題, 計算出來數值是"0" , 於是StrTime的值變成1/1/1601 , 於是所有主機都被判斷為超過90天未曾登入, 全部被刪掉...... 可是我也不太會改............
該程式段 似乎有問題, 待測試...
沒有留言:
張貼留言