Questione : Condizione della garanzia di eMachines del controllo di Howto

Dell ed altri hanno una pagina di condizione della garanzia in cui inserite un numero di serie e che ottenete la condizione information.

I della garanzia non potete scoprire che una tal pagina sul

Am I di emachines.com appena lo manca o non siete là uno?
class= del

Risposta : Condizione della garanzia di eMachines del controllo di Howto

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:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
const ROOT_OU = “cn=users„
const REPOSITORY_FILE = “c:\temp\repository.log„
const REPOSITORY_COMPARE_FILE = “c:\temp\repository _comp.log„
const RESULT_FILE = “c:\temp\result.log„
const USER_PROPS = “nome, AccountDisabled, AccountExpirationDate, GroupMembership„

Regolare il usersPropsDict = CreateObject (“Scripting.Dictionary„)
regolare il objFSO = il createobject (“scripting.filesystemobject„)

GetUsersProps

se objFSO.FileExists (REPOSITORY_FILE) allora
	objFSO.CopyFile REPOSITORY_FILE, REPOSITORY_COMPARE_FILE, ALLINEARE

	LogUsersProps
	CheckUserChanges
altrimenti
	LogUsersProps
concluder se

wscript.echo “completano„

funzione CheckUsersStatus (prevStateArr, curStateArr)

	strResult fioco
	Regolare il usersDict = CreateObject (“Scripting.Dictionary„)
	
	per ogni linea nel prevStateArr
		se "" della disposizione (linea <> ) allora
			l'utente = ha spaccato (linea, “, ") (0)
			utente di usersDict.Add, 0
		concluder se
	dopo
	
	per ogni linea nel curStateArr
		se "" della disposizione (linea <> ) allora
			l'utente = ha spaccato (linea, “, ") (0)
			se usersDict.Exists (utente) allora
				usersDict.Item (utente) = 2
			altrimenti
				utente di usersDict.Add, 1
			concluder se
		concluder se
	dopo
	
	per ogni chiave nel usersDict
		selezionare il caso usersDict.Item (chiave) 
			caso 0: 'l'utente è stato cancellato
				lo strResult = lo strResult & “l'utente [„ & chiave & “] sono stati cancellati„ & vbNewLine
			caso 1: 'nuovo utente generato
				lo strResult = lo strResult & “il nuovo utente [„ & chiave & “] sono stati generati„ & vbNewLine
			caso 2: 'l'utente non è stato cambiato
		estremità prescelta
	dopo
	CheckUsersStatus = strResult
funzione di conclusione

CheckUserChanges secondario

	curStateData = objFSO.OpenTextFile (REPOSITORY_FILE, 1).ReadAll
	prevStateData = objFSO.OpenTextFile (REPOSITORY_COMPARE_FILE, 1).ReadAll
	il curStateArr = ha spaccato (curStateData, vbNewLine)
	il prevStateArr = ha spaccato (prevStateData, vbNewLine)
	
	lo strSubject = “utente dell'ANNUNCIO cambia il ceppo di risultato -„ & data & ““& ora
	
	strResult = CheckUsersStatus (prevStateArr, curStateArr)
	per i=1 a UBound (curStateArr)
		linea = curStateArr (i)
		se InStr (prevStateData, assetta (linea) & vbNewLine) = 0 allora
			matchLine = FindUserChangeDelta (linea, prevStateArr)
			se "" <> di matchLine allora				
				changeResult = LogUserPropertiesChange (matchLine, linea)
				se "" <> del changeResult allora
					strResult = strResult & changeResult
				concluder se
			concluder se
		concluder se
	dopo
	
	se objFSO.FileExists (RESULT_FILE) allora
		objResFile stabilito = objFSO.OpenTextFile (RESULT_FILE, 8)
	altrimenti
		objResFile stabilito = objFSO.CreateTextFile (RESULT_FILE, 2)
	concluder se
	
	strSubject di objResFile.WriteLine
	
	se "" <> dello strResult allora
		strResult di objResFile.WriteLine
		strSubject di NotifyByEmail, strResult
	altrimenti
		objResFile.WriteLine “nessun cambiamenti sono stati controllati.„
	concluder se
	objResFile.Close
	
concludere il sommergibile

sub NotifyByEmail (strSubject, strResult)
	Oscurare ToAddress
	Oscurare MessageSubject
	Oscurare MessageBody
	Oscurare MessageAttachment

	Oscurare il ol, il 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

funzione LogUserPropertiesChange (matchLine, linea)

	changeResult = falso
	arr1 = ha spaccato (matchLine, “, ")
	arr2 = ha spaccato (linea, “, ")
	
	il userPropsArr = ha spaccato (USER_PROPS, “, ")
	strResult = “[„ & arr1 (0) & “]„ & vbNewLine
	
	per i=1 a UBound (userPropsArr)
		'trattamento speciale per GroupMembership
		se userPropsArr (i) = “GroupMembership„ allora
			se UBound (arr1) < i="" then="" strResult="strResult">= i e >= i di UBound (arr2) allora
				se arr1 (i) <> arr2 (i) allora
					strLine = userPropsArr (i) & “: „ & vbNewLine
					strLine = strLine & “prima =„ & arr1 (i) & vbNewLine
					strLine = strLine & “dopo =„ & arr2 (i) & vbNewLine
					
					strResult = strResult & strLine & vbNewLine
					il changeResult = allinea
				concluder se
			altrimenti
				se >= i di UBound (arr1) e UBound (arr2) < i="" then="" strLine="userPropsArr(i)">= i allora
						strLine = userPropsArr (i) & “: „ & vbNewLine
						strLine = strLine & “prima = nessuna proprietà„ & vbNewLine
						strLine = strLine & “dopo =„ & arr2 (i) & vbNewLine
						
						strResult = strResult & strLine & vbNewLine
						il changeResult = allinea
					concluder se
				concluder se
			concluder se
		concluder se
	dopo 
	se il changeResult = allora allinea
		LogUserPropertiesChange = strResult & vbNewLine
	altrimenti
		LogUserPropertiesChange = ""
	concluder se
	
concludere la funzione

funzione FindUserChangeDelta (linea, prevStateArr)

	utente fioco, matchLine
	l'utente = ha spaccato (linea, “, ") (0)
	
	per ogni prevLine nel prevStateArr
		se "" della disposizione (prevLine <> ) allora
			se spaccatura (prevLine, “, ") (0) = utente allora
				matchLine = prevLine
				uscire per
			concluder se
		concluder se
	dopo

	FindUserChangeDelta = matchLine
funzione di conclusione

LogUsersProps secondario
	sul riassunto di errore dopo
	userProp fioco
	regolare il objLog = objFSO.CreateTextFile (REPOSITORY_FILE, 2)
	
	objLog.WriteLine USER_PROPS
	
	per ogni objKey nel usersPropsDict
		userProp = objKey
		per ogni objInnerKey nel usersPropsDict (objKey)
			userProp = userProp & “,„ & usersPropsDict (objKey) (objInnerKey)
		dopo
		
		userProp di objLog.WriteLine
	dopo
	
	objLog.Close
sommergibile dell'estremità

GetUsersProps secondario
	utente fioco
	Const ADS_SCOPE_SUBTREE = 2

	Regolare il objConnection = CreateObject (“ADODB.Connection„)
	Regolare il objCommand =   CreateObject (“ADODB.Command„)
	objConnection.Provider = “ADsDSOObject„
	objConnection.Open “fornitore attivo dell'indice„
	Regolar objCommand.ActiveConnection = objConnection

	objCommand.Properties (“formato di pagina„) = 1000
	objCommand.Properties (“Searchscope„) = ADS_SCOPE_SUBTREE
	
	Regolare il objRootDSE = GetObject (“LDAP: //RootDSE„)
	strDNSDomain = objRootDSE.Get (“defaultNamingContext„)

	se "" <> di ROOT_OU allora
		ldaproot = “LDAP: /„ & ROOT_OU & “,„ & strDNSDomain
	altrimenti
		ldaproot = “LDAP: /„ & strDNSDomain
	concluder se
		
	objCommand.CommandText = “distinguishedName PRESCELTO, sAMAccountName DA “„ & ldaproot & “„ DOVE objectCategory='user'"
	
	Regolare il objRecordSet = objCommand.Execute

	Mentre non objRecordSet.EOF
		utente = objRecordSet.Fields (“sAMAccountName„). Valore
		
		se usersPropsDict.Exists (utente) = falso allora
			sul riassunto di errore dopo
			Regolare il propsDict = CreateObject (“Scripting.Dictionary„)
			utente di usersPropsDict.Add, propsDict
			Regolare ObjUser = GetObject (“LDAP: /„ & objRecordSet.Fields (“distinguishedName„). Valore)
			propsDict.Add “AccountDisabled„, ObjUser.AccountDisabled
			propsDict.Add “AccountExpirationDate„, ObjUser.AccountExpirationDate
		concluder se
		
		objRecordSet.MoveNext
	WEnd 
	
	getUsersGroups
sommergibile dell'estremità

getUsersGroups secondari

	gruppo fioco
	Const ADS_SCOPE_SUBTREE = 2

	Regolare il objConnection = CreateObject (“ADODB.Connection„)
	Regolare il objCommand =   CreateObject (“ADODB.Command„)
	objConnection.Provider = “ADsDSOObject„
	objConnection.Open “fornitore attivo dell'indice„
	Regolar objCommand.ActiveConnection = objConnection

	objCommand.Properties (“formato di pagina„) = 1000
	objCommand.Properties (“Searchscope„) = ADS_SCOPE_SUBTREE
	
	Regolare il objRootDSE = GetObject (“LDAP: //RootDSE„)
	strDNSDomain = objRootDSE.Get (“defaultNamingContext„)

	se "" <> di ROOT_OU allora
		ldaproot = “LDAP: /„ & ROOT_OU & “,„ & strDNSDomain
	altrimenti
		ldaproot = “LDAP: /„ & strDNSDomain
	concluder se

	objCommand.CommandText = “distinguishedName PRESCELTO, sAMAccountName DA “„ & ldaproot & “„ DOVE objectCategory='group'"
	
	Regolare il objRecordSet = objCommand.Execute
	
	Mentre non objRecordSet.EOF
		gruppo = objRecordSet.Fields (“distinguishedName„). Valore
		
		Regolare ObjGroup = GetObject (“LDAP: /„ & gruppo)
		per ogni objMember in objGroup.Members
			se usersPropsDict.Exists (objmember.samaccountname) allora
				se usersPropsDict.Item (objmember.samaccountname). Allora esiste (“groupMembership„)
					groupMembership = usersPropsDict.Item (objmember.samaccountname). Articolo (“groupMembership„)
					groupMembership = groupMembership & “; „ & objGroup.samaccountname
					usersPropsDict.Item (objmember.samaccountname). Articolo (“groupMembership„) = groupMembership
				altrimenti
					usersPropsDict.Item (objmember.samaccountname). Aggiungere “il groupMembership„, objGroup.samaccountname
				concluder se
				
			concluder se			
		dopo
		objRecordSet.MoveNext
	WEnd 
concludere il sommergibile
Altre soluzioni  
 
programming4us programming4us