如何把自己變成電腦
把所有快樂儲存起來
將所有煩惱全部刪除
累的時候裝個不斷電
情緒不穩時加穩壓器
需要放空時就重開機
想重新出發請格式化
  C:> Set me = %ComputerName%  
  C:> Xcopy *.Happy %%Me  
  C:> Del *.Trouble  
  C:> If EXIST Tired Setup UPS  
  C:> If EXIST Swing Setup Stabilizer  
  C:> If EXIST Vent Reboot  
  C:> If ResetGame==True Format C:  

10.02.2008

如何刪除舊的電腦帳戶

文章來源: 聖哥的資訊站 [技術]如何刪除舊的電腦帳戶

如果網域中的電腦常常變更電腦名稱,或者經常有新的電腦加入網域,或者重新安裝網域成員電腦,會造成 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天未曾登入, 全部被刪掉...... 可是我也不太會改............

該程式段 似乎有問題, 待測試...

沒有留言:

張貼留言