DECLARE @PastDays INT
SET @PastDays = 60;
DECLARE @StartPastDays INT
SET @StartPastDays = 1;
DECLARE @date DATETIME
SET @date = '20000101'
DECLARE @days INT
SET @days = DATEDIFF(day, @date, GETDATE())
DECLARE @StartDate DATETIME
SET @StartDate = DATEADD(day, @days-(@PastDays+@StartPastDays-1), @date)
DECLARE @EndDate DATETIME
SET @EndDate = DATEADD(day, @days-@StartPastDays+1+1, @date)
PRINT @StartDate
PRINT @EndDate
IF OBJECT_ID('TempDB..#ADComputer', 'U') IS NOT NULL
DROP TABLE #ADComputer;
Create Table #ADComputer(
name nvarchar(256)
, description nvarchar(256)
, lastLogon bigint
, whenChanged datetime
, distinguishedName nvarchar(256)
)
INSERT INTO #ADComputer (name,description,lastLogon,whenChanged,distinguishedName)
SELECT name,description,lastLogon,whenChanged,distinguishedName
FROM OPENQUERY (
ADSI, '<LDAP://{DomainController}>;(&(objectCategory=computer)
(objectClass=computer));name,description,lastLogon,whenChanged,distinguishedName;subtree'
)
SELECT name as 'Computer Name'
, CASE WHEN CHARINDEX('OU=', distinguishedName)> 0
THEN REPLACE(SUBSTRING(distinguishedName,CHARINDEX('OU=',distinguishedName)+3,CHARINDEX('DC=', distinguishedName)-CHARINDEX('OU=', distinguishedName)-4),',OU=','/')
WHEN CHARINDEX('CN=', distinguishedName, 3) > 0
THEN REPLACE(SUBSTRING(distinguishedName,CHARINDEX('CN=',distinguishedName, 3)+3,CHARINDEX('DC=', distinguishedName)-CHARINDEX('CN=', distinguishedName, 3)-4),',CN=','/')
ELSE 'None'
END AS 'OU'
, REPLACE(SUBSTRING(distinguishedName,CHARINDEX('DC=',distinguishedName)+3,LEN(distinguishedName)-2-CHARINDEX('DC=',distinguishedName)),',DC=','.') AS 'Domain'
, description AS 'Description'
, CONVERT(bigint, DATEDIFF([day],(DATEADD([second], (nullif(lastLogon,0)-116444736000000000)/10000000, '1/1/1970')),GetUtcDate())) AS 'Last Logon Time (Days)'
, DATEADD([second], (nullif(lastLogon, 0)-116444736000000000)/10000000+DATEDIFF(second, GETUTCDATE(), GETDATE()), '1/1/1970') AS 'Last Logon Time'
, dateadd([second], DATEDIFF(second, GETUTCDATE(), GETDATE()), whenChanged) AS 'When Changed'
FROM #ADComputer
WHERE (whenChanged < @StartDate)
ORDER BY whenChanged DESC
DROP TABLE #ADComputer