Option Explicit '------------------------------------------' '-- All variables must be declared below --' '-- '-- Syntax - Dim ----------' '------------BEGINNING----------------------' Dim Scripting Dim ScriptingDirectory Dim ScriptingInventory Dim result, ret Dim dsn Dim ErrorText Dim objFSO Dim Datimestart, FilenameDatePart Dim LogFile, errorLog, LogPath Dim numberOfComputers Dim index Dim adsComputer, adsType Dim LastServerContact Dim propertyString Dim MaxAge '------------------------------------------' '-- All variables must be declared above --' '-- '-- Syntax - Dim ----------' '------------END---------------------------' '-------------------------------------------------------' '-- Below are variables and values used within script --' '-- '-- Change these to match your environmnet ----' '-- '-- Syntax - = -----' '------------BEGINNING----------------------------------' '-- DSN name of DomainU dsn = "dc=mydomain,dc=com" '-- Log file location LogPath = "c:\Logs\OldComputers\" 'path (without filename!!! (e.g. "c:\logs\")) for the script logfile 'delete computers older than MaxAge days MaxAge = 90 '--------------------------------------------------------------' '-- Below are variables and values used within script ---------' '-- '-- Syntax - = "" ----------' '------------END-----------------------------------------------' '--------------------------------------' '-- Initialization of API components --' '-----------DO NOT ALTER --------------' '------------BEGINNING-----------------' Datimestart = Now FilenameDatePart = Year(Datimestart) & "_" & Month(Datimestart) & "_" & Day (Datimestart) & "_" & Hour(Datimestart) & "_" & Minute(Datimestart) LogFile = LogPath & "OldComputers_" & FilenameDatePart & ".log" Set Scripting = WScript.CreateObject("Utimaco.SafeGuard.AdministrationConsole.Scripting.Base") 'wscript.Echo("Created Base Object") Set ScriptingDirectory = Scripting.CreateDirectoryClassInstance() 'wscript.Echo("Created Directory Object") Set ScriptingInventory = Scripting.CreateInventoryClassInstance() 'wscript.Echo("Created Inventory Object") result = Scripting.Initialize() 'wscript.Echo("Init API : " & result) Set objFSO = CreateObject("scripting.filesystemobject") Set errorLog = objFSO.createtextfile(LogFile , True) '-------------------------------------' '-- Initialization of API components --' '------------END----------------------' '----------------------------------------' '-- Authentication of Security Officer --' '-----------DO NOT ALTER ----------------' '-----------BEGINNING--------------------' 'use this if you run the script on a SGN Server (no authentication necessary) result = Scripting.AuthenticateService() ret = Scripting.GetLastError(ErrorText) errorLog.writeline("Authentication: " & ErrorText) result = ScriptingDirectory.Initialize() errorLog.writeline("Init Scripting.Directory: " & result) result = ScriptingInventory.Initialize() errorLog.writeline("Init Scripting.Inventory: " & result) '----------------------------------------' '-- Authentication of Security Officer --' '-----------END--------------------------' '----------------------------------------' '-------- Main Part ---------------------' '-------- BEGINNING ---------------------' ' get a list of all computers result = ScriptingDirectory.GetObjectInitialize("*", dsn, 1 , numberOfComputers) ret = Scripting.GetLastError(ErrorText) errorLog.writeline("GetObjectInitialize: " & ErrorText) 'run loop for each computer If numberOfComputers > 0 Then For index = 0 to numberofComputers - 1 'get computer name result = ScriptingDirectory.GetObjectByIndex(index, adsComputer, adsType) 'get value of Last Server Contact for the computer result = ScriptingInventory.GetComputerInventory(adsComputer, "LastServerContact",LastServerContact,propertyString) If result = 0 Then 'write value of Last Server Contact to log errorLog.writeline("Computer: " & adsComputer & " " & LastServerContact) 'check number of days since last server contact and delete computer if days exceed limit if DateDiff("d",LastServerContact,Datimestart) > MaxAge then errorLog.writeline("Deleting Computer: " & adsComputer) 'uncomment next line for deletion 'result = ScriptingDirectory.DeleteMachine(adsComputer) End If End If Next End If result = ScriptingDirectory.GetObjectFinalize() '----------------------------------------' '-------- Main Part ---------------------' '-------- END ---------------------------' '-------------------------' '-- Closing Connections --' '------ BEGINNING --------' result = Scripting.GetLastError(ErrorText) 'wscript.Echo("GetLastError returns : " & ErrorCode & "|" & ErrorText) result = ScriptingInventory.FreeResources() 'wscript.Echo("Finalize Inventory: " & result) result = ScriptingDirectory.FreeResources() 'wscript.Echo("Finalize SGD: " & result) result = Scripting.FreeResources() 'wscript.Echo("Finalize API: " & result) ErrorLog.Close '-------------------------' '-- Closing Connections --' '------ End --------------'