IF OBJECT_ID('TempDB..#UserPwdLastSet', 'U') IS NOT NULL DROP TABLE #UserPwdLastSet;


Create Table #UserPwdLastSet (displayName nvarchar(256),sAMAccountName nvarchar(256), pwdLastSet bigint, accountExpires bigint, distinguishedName nvarchar(256))
Insert Into #UserPwdLastSet (displayName,sAMAccountName,pwdLastSet,accountExpires,distinguishedName)
SELECT displayName,sAMAccountName,pwdLastSet,accountExpires,distinguishedName from openquery (
ADSI, '<LDAP://{DomainController}>;(&(objectCategory=person)(objectClass=user));displayName,sAMAccountName,pwdLastSet,accountExpires,distinguishedName;subtree'
)
SELECT dbo.NormalizeADUserDisplayName(displayName, sAMAccountName) AS 'Display Name'
        , sAMAccountName AS 'Username',
CASE
WHEN PwdLastSet=0 THEN 0
ELSE CONVERT(bigint, DATEDIFF([day],(DATEADD([second], (nullif(pwdLastSet,0)-116444736000000000)/10000000, '1/1/1970')),GetUtcDate()))
END AS 'Password Last Set (Days)',
CASE
WHEN PwdLastSet = 0 THEN 'Must Change'
ELSE CONVERT(nvarchar(256), DATEADD([second], (nullif(CONVERT(bigint, pwdLastSet),0)-116444736000000000)/10000000 + DATEDIFF(second, GETUTCDATE(), GETDATE()), '1/1/1970'))
END AS 'Password Last Set',
CASE
WHEN accountExpires IS NULL OR accountExpires=0 THEN 'Not Set'
WHEN accountExpires = 9223372036854775807 THEN 'Never'
ELSE CONVERT(nvarchar(256), DATEADD([second], (accountExpires/10000000)-11644473600 + DATEDIFF(second, GETUTCDATE(), GETDATE()), '1/1/1970'))
END as 'Account Expiration Date',
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'
FROM #UserPwdLastSet
ORDER BY PwdLastSet DESC
DROP TABLE #UserPwdLastSet