1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
|
const DAYS_DIFF = 10
const ROOT_OU = „cn=computers“
const LOG_FILE = „C:\temp\Last _Logon.log“
Schemerige objRootDSE, strConfig, objConnection, objCommand, strQuery
Schemerige objRecordSet, objDC, F, fso
Schemerige strDNSDomain, objShell, lngBiasKey, lngBias, k, arrstrDCs ()
Schemerige strDN, dtmDate, objDate, lngDate, objList, strUser
Schemerige logContent strBase, strFilter, strAttributes, lngHigh, lngLow,
Reeks objFSO = CreateObject („Scripting.FileSystemObject“)
Vastgestelde objTextFile = objFSO.CreateTextFile (LOG_FILE, Ware 2,)
'Gebruik een woordenboekvoorwerp aan spoor recentste lastLogon voor elke gebruiker.
Vastgestelde objList = CreateObject („Scripting.Dictionary“)
objList.CompareMode = vbTextCompare
'Verkrijg lokale bias van de Tijdzone uit machineregistratie.
Plaats objShell = CreateObject („Wscript.Shell“)
lngBiasKey = objShell.RegRead („HKLM \ de Controle \ van het Systeem \ CurrentControlSet \“ _
& „TimeZoneInformation \ ActiveTimeBias“)
Als UCase (TypeName (lngBiasKey)) = „LANG“ toen
lngBias = lngBiasKey
ElseIf UCase (TypeName (lngBiasKey)) = „VARIANT ()“ toen
lngBias = 0
Voor k = 0 aan UBound (lngBiasKey)
lngBias = lngBias + (lngBiasKey (k) * 256 ^ k)
Daarna
Eind als
'Bepaal configuratiecontext en DNS domein van voorwerp RootDSE.
Plaats objRootDSE = GetObject („LDAP: //RootDSE“)
strConfig = objRootDSE.Get („configurationNamingContext“)
strDNSDomain = objRootDSE.Get („defaultNamingContext“)
De 'DRUKTE van het gebruik aan onderzoeks Actieve Folder voor ObjectClass nTDSDSA.
'Dit zal alle Controlemechanismen van het Domein identificeren.
Reeks objCommand = CreateObject („ADODB.Command“)
Vastgestelde objConnection = CreateObject („ADODB.Connection“)
objConnection.Provider = „ADsDSOObject“
objConnection.Open de „Actieve Leverancier van de Folder“
objCommand.ActiveConnection = objConnection
strBase = ""
strFilter = „(objectClass=nTDSDSA)“
strAttributes = „AdsPath“
strQuery = strBase & „; “ & strFilter & „; “ & strAttributes & „; onderverdeling“
objCommand.CommandText = strQuery
objCommand.Properties (de „Grootte van de Pagina“) = 100
objCommand.Properties („Onderbreking“) = 60
objCommand.Properties (de „Resultaten van het Geheime voorgeheugen“) = Vals
Reeks objRecordSet = objCommand.Execute
'Som oudervoorwerpen van klasse op nTDSDSA. Sparen het Controlemechanisme van het Domein
'AdsPaths in dynamische serie arrstrDCs.
k = 0
Doe tot objRecordSet.EOF
Plaats objDC = _
GetObject (GetObject (objRecordSet.Fields („AdsPath“)). Ouder)
Het Domein van ReDim arrstrDCs (k)
arrstrDCs (k) = objDC.DNSHostName
k = k + 1
objRecordSet.MoveNext
Lijn
'Win lastLogon attributen voor elke gebruiker op elk Controlemechanisme van het Domein terug.
Voor k = 0 aan UBound (arrstrDCs)
als ROOT_OU <> "" toen
strBase = ""
anders
strBase = ""
beëindig als
strFilter = „(& (objectCategory=computer) (objectClass=computer))“
strAttributes = „CN, lastLogon“
strQuery = strBase & „; “ & strFilter & „; “ & strAttributes _
& „; onderverdeling“
objCommand.CommandText = strQuery
Op Fout hervat daarna
Err.Clear
Reeks objRecordSet = objCommand.Execute
Als Err.Number <> 0 toen
Err.Clear
Op Fout GoTo 0
Anders
Schemerige I 'als Geheel
Op Fout GoTo 0
Doe tot objRecordSet.EOF
strDN = objRecordSet.Fields („CN“)
lngDate = objRecordSet.Fields („lastLogon“)
Op Fout hervat daarna
Err.Clear
Reeks objDate = lngDate
Als Err.Number <> 0 toen
Err.Clear
dtmDate = #1/1/1601#
Anders
lngHigh = objDate.HighPart
lngLow = objDate.LowPart
Als lngLow < 0="" Then="" lngHigh="lngHigh"> objList (strDN) Dan
objList (strDN) = dtmDate
Eind als
Anders
objList.Add strDN, dtmDate
Eind als
objRecordSet.MoveNext
Lijn
Eind als
Daarna
Voor Elke strUser in objList
objDate = CDate (objList (strUser))
diffDays = DateDiff („D“, objDate, Datum)
Als diffDays > DAYS_DIFF toen
logContent = logContent & strUser & „; “ & objList (strUser) & vbNewLine
Eind als
Daarna
logContent objTextFile.WriteLine
objTextFile.Close
NotifyByEmail „van Machines van LastLogon E-mail- Bericht“, logContent
objConnection.Close
Reeks objRootDSE = niets
Vastgestelde objConnection = niets
Reeks objCommand = niets
Reeks objRecordSet = niets
Reeks objDC = niets
Reeks objDate = niets
Vastgestelde objList = niets
Reeks objShell = niets
„Gedaane“ MsgBox
sub NotifyByEmail (strSubject, strResult)
Schemerige ToAddress
Schemerige MessageSubject
Schemerige MessageBody
Schemerige MessageAttachment
schemerige myRecipient, olMailItem
Schemerige ol, NS, newMail
ToAddress = „[email protected]“
MessageSubject = strSubject
MessageBody = strResult
Reeks ol = WScript.CreateObject („Outlook.Application“)
Vastgesteld NS = ol.getNamespace („MAPI“)
ns.log op "", valse "", waar,
Reeks newMail = ol.CreateItem (olMailItem)
newMail.Subject = MessageSubject
newMail.Body = MessageBody & vbCrLf
'bevestig de ontvanger, enkel desgevallend…
Plaats myRecipient = ns.CreateRecipient (ToAddress)
myRecipient.Resolve
Als niet myRecipient.Resolved toen
MsgBox „onbekende ontvanger“
Anders
(myRecipient) newMail.Recipients.Add
newMail.Send
Eind als
Reeks ol = niets
eind sub
|