Скрипт позволяет вычитать из
Active Directory пользовательские аккаунты с последним удачным входом не позднее
N-ого дня назад. Таким образом можно выявить устаревшие учётные записи и впоследствии удалить их.
FQDN - имя
LDAP вашего домена или нужной ветки;
intTimeLimit - делать выборку тех записей, которые авторизовались в домене более данного количества дней назад;
fileUserLst - файл отчёта по работе скрипта формата
.csv.
ON ERROR RESUME NEXT
FQDN = "DC=mydomain,DC=corp" 'Input your Fully Qualified Domain Name or LDAP path to subtree
intTimeLimit = 365 'Time limit in number of days
fileUserLst = "c:\Temp\user_list.csv" 'File name for saving list of users
Const ADS_SCOPE_SUBTREE = 2
' Obtain local Time Zone bias from machine registry.
' This bias changes with Daylight Savings Time.
Set objShell = CreateObject("Wscript.Shell")
lngBiasKey = objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _
& "TimeZoneInformation\ActiveTimeBias")
If (UCase(TypeName(lngBiasKey)) = "LONG") Then
lngBias = lngBiasKey
ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then
lngBias = 0
For k = 0 To UBound(lngBiasKey)
lngBias = lngBias + (lngBiasKey(k) * 256^k)
Next
End If
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Select Name,sAMAccountName,
lastLogonTimestamp
from " & "'LDAP://" & FQDN & "' where objectCategory='person' and objectClass='user'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFile = fso.CreateTextFile(fileUserLst, True)
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordset.EOF
objLogon = objRecordSet.Fields("
lastLogonTimestamp
")
intLogonTime = objLogon.HighPart * (2^32) + objLogon.LowPart
intLogonTime = intLogonTime / (60 * 10000000) - lngBias
intLogonTime = intLogonTime / 1440
If intLogonTime + #1/1/1601# < Now - intTimeLimit Then
objFile.WriteLine( objRecordSet.Fields("Name").Value & ","& objRecordSet.Fields("sAMAccountName").Value & "," & intLogonTime + #1/1/1601#)
End If
objRecordSet.MoveNext
Loop
Если данный скрипт будет показывать время входа каждого пользователя 1/1/1601, то вероятно у вас уровень домена
Windows 2000 или
Windows 2003. Чтобы заставить работать запрос, измените
"
lastLogon" в скрипте на "
lastLogonTimestamp".
Комментариев нет:
Отправить комментарий