Questione : Controllare un Ou e tutti i Ou secondari ed inviare con la posta elettronica se un calcolatore non si sia messo in contatto con il dominio per i più di 10 giorni. Vbs o Powershell

Ciao,

Monitor un Ou e tutti i Ou ed email secondari se un calcolatore non si sia messo in contatto con il dominio per più di 10 days.
I vuole l'aiuto con uno scritto che può esplorare tutti i calcolatori ed inviare con la posta elettronica appena i nomi della macchina che non si sia messo in contatto con il dominio o il nessun inserito per 10 days.

Can chiunque aiutarlo con questo please.

regards
Sharath
class= del

Risposta : Controllare un Ou e tutti i Ou secondari ed inviare con la posta elettronica se un calcolatore non si sia messo in contatto con il dominio per i più di 10 giorni. Vbs o Powershell

fisso
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„

objRootDSE fioco, strConfig, objConnection, objCommand, strQuery
objRecordSet fioco, objDC, f, fso
strDNSDomain fioco, objShell, lngBiasKey, lngBias, K, arrstrDCs ()
strDN fioco, dtmDate, objDate, lngDate, objList, strUser
strBase fioco, strFilter, strAttributes, lngHigh, lngLow, logContent

Regolare il objFSO = CreateObject (“Scripting.FileSystemObject„)
Regolar objTextFile = objFSO.CreateTextFile (LOG_FILE, 2, allineare)

'Usare un oggetto del dizionario per seguire l'ultimo lastLogon per ogni utente.
Regolare il objList = CreateObject (“Scripting.Dictionary„)
objList.CompareMode = vbTextCompare

'Ottenere la polarizzazione locale della fascia oraria dalla registrazione della macchina.
Regolare il objShell = CreateObject (“Wscript.Shell„)
lngBiasKey = objShell.RegRead (“HKLM \ sistema \ CurrentControlSet \ controllo \„ _
  & “TimeZoneInformation \ ActiveTimeBias„)
Se UCase (TypeName (lngBiasKey)) = “LUNGAMENTE„ allora
  lngBias = lngBiasKey
ElseIf UCase (TypeName (lngBiasKey)) = “VARIANTE ()„ allora
  lngBias = 0
  Per K = 0 a UBound (lngBiasKey)
    lngBias = lngBias + (lngBiasKey (k) * 256 ^ k)
  Dopo
Concluder se

'Determinare il contesto di configurazione ed il dominio di DNS dall'oggetto di RootDSE.
Regolare il objRootDSE = GetObject (“LDAP: //RootDSE„)
strConfig = objRootDSE.Get (“configurationNamingContext„)
strDNSDomain = objRootDSE.Get (“defaultNamingContext„)

'Usare la DIFFICOLTÀ per cercare l'indice attivo il nTDSDSA di ObjectClass.
'Questo identificherà tutti i regolatori di dominio.
Regolare il objCommand = CreateObject (“ADODB.Command„)
Regolare il objConnection = CreateObject (“ADODB.Connection„)
objConnection.Provider = “ADsDSOObject„
objConnection.Open “fornitore attivo dell'indice„
objCommand.ActiveConnection = objConnection

strBase = ""
strFilter = “(objectClass=nTDSDSA)„
strAttributes = “AdsPath„
strQuery = strBase & “; „ & strFilter & “; „ & strAttributes & “; sotto-albero„

objCommand.CommandText = strQuery
objCommand.Properties (“formato di pagina„) = 100
objCommand.Properties (“prespegnimento„) = 60
objCommand.Properties (“il nascondiglio risulta„) = falso

Regolare il objRecordSet = objCommand.Execute

'Enumerare gli oggetti del genitore del nTDSDSA del codice categoria. Conservare il regolatore di dominio
'AdsPaths nei arrstrDCs dinamici di allineamento.
K = 0
Fare fino a objRecordSet.EOF
  Regolare il objDC = il _
    GetObject (GetObject (objRecordSet.Fields (“AdsPath„)). Genitore)
  arrstrDCs della conserva di ReDim (k)
  arrstrDCs (k) = objDC.DNSHostName
  K = K + 1
  objRecordSet.MoveNext
Ciclo
'Richiamare l'attributo del lastLogon per ogni utente su ogni regolatore di dominio.
Per K = 0 a UBound (arrstrDCs)

	se "" <> di ROOT_OU allora
		strBase = ""
	altrimenti
		strBase = ""
	concluder se
	  
 strFilter = “(& (objectCategory=computer) (objectClass=computer))„
  strAttributes = “CN, lastLogon„
  strQuery = strBase & “; „ & strFilter & “; „ & _ degli strAttributes
    & “; sotto-albero„

  objCommand.CommandText = strQuery
  Sul riassunto di errore dopo
  Err.Clear
  Regolare il objRecordSet = objCommand.Execute
  Se Err.Number <> 0 allora
    Err.Clear
    Sull'errore 0 di avanzamento
  Altrimenti
  Oscurare la i 'come numero intero
    Sull'errore 0 di avanzamento
    Fare fino a objRecordSet.EOF
   
      strDN = objRecordSet.Fields (“CN„)
      lngDate = objRecordSet.Fields (“lastLogon„)
      Sul riassunto di errore dopo
      Err.Clear
      Regolare il objDate = il lngDate

      Se Err.Number <> 0 allora
        Err.Clear
        dtmDate = #1/1/1601#
      Altrimenti
        lngHigh = objDate.HighPart
        lngLow = objDate.LowPart
        Se objList < 0="" Then="" lngHigh="lngHigh"> del lngLow (strDN) allora
          objList (strDN) = dtmDate
        Concluder se
      Altrimenti
        strDN di objList.Add, dtmDate
      Concluder se
      objRecordSet.MoveNext
    Ciclo
  Concluder se
Dopo

Per ogni strUser in objList
	objDate = CDate (objList (strUser))
	diffDays = DateDiff (“d„, objDate, data)
	Se diffDays > DAYS_DIFF allora 
		logContent = logContent &  strUser & “; „ & objList (strUser) & vbNewLine
	Concluder se       
Dopo

objTextFile.WriteLine logContent
objTextFile.Close

NotifyByEmail “lavora la notifica alla macchina del email di LastLogon„, logContent

objConnection.Close
Regolare il objRootDSE = niente
Regolare il objConnection = niente
Regolare il objCommand = niente
Regolare il objRecordSet = niente
Regolare il objDC = niente
Regolare il objDate = niente
Regolare il objList = niente
Regolare il objShell = niente

MsgBox “fatto„

NotifyByEmail secondario (strSubject, strResult)
	ToAddress fioco
	MessageSubject fioco
	MessageBody fioco
	MessageAttachment fioco
	myRecipient fioco, olMailItem

	Ol fioco, NS, newMail

	ToAddress = “[email protected]„
	MessageSubject = strSubject
	MessageBody = strResult

	Regolare il ol = WScript.CreateObject (“Outlook.Application„)
	Regolar NS = ol.getNamespace (“MAPI„)
	ns.log su "", "", allineare, falso
	Regolare il newMail = ol.CreateItem (olMailItem)
	newMail.Subject = MessageSubject
	newMail.Body = MessageBody & vbCrLf

	'convalidare il destinatario, appena nel caso…
	Regolar myRecipient = ns.CreateRecipient (ToAddress)
	myRecipient.Resolve
	Se non myRecipient.Resolved allora
	   MsgBox “destinatario sconosciuto„
	Altrimenti
	   newMail.Recipients.Add (myRecipient)
	   newMail.Send
	Concluder se

	Regolare il ol = niente

concludere il sommergibile
Altre soluzioni  
 
programming4us programming4us