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:
|
Explicit alternativ
Dunkel adoCommand, adoConnection, strBase, strFilter, strAttributes
Dunkelt objLogFile, objInputFile, objFileSystem, objRootDSE, strDNSDomain, strQuery, adoRecordset, strName
Dunkel objNetwork, strComputer, strUser, objAdmin, strDomain
Dunkelt fodrar, tecken, fodrar
Fastställd objFileSystem = CreateObject (”Scripting.fileSystemObject”)
Fastställdt objInputFile = objFileSystem.OpenTextFile (”C:\temp\users.txt”, 1)
fodrar = splittring (objInputFile.ReadAll, vbNewlinen)
objInputFile.Close
Fastställdt objLogFile = objFileSystem.CreateTextFile (”C:\temp\users.log”, 2)
För varje fodra fodrar in
tecken = splittring (fodra, ”; ”)
strComputer = klippning (tecken (0))
strUser = klippning (tecken (1))
om pingen (strComputer) = True därefter
objLogFile.WriteLine-strComputer & ”kontaktade”,
AddUserGroup strComputer, strUser
Annars
objLogFile.WriteLine-strComputer & ”kunde inte kontaktas”,
avsluta om
Därefter
objLogFile.Close
UnderAddUserGroup (strComputer, strUser)
'Hämta den kända lokaldatoren och NetBIOS som är känd av område.
Fastställd objNetwork = CreateObject (”Wscript.Network”)
strDomain = objNetwork.UserDomain
WScript.Echo ”tillfogar” & strUser & ”till” & strComputer
'Röra till lokaladministratörgruppen.
Fastställd objAdmin = GetObject (”WinNT: /” & strComputer & ”/Administrators, grupp”)
'Ställa in ADO anmärker.
Fastställd adoCommand = CreateObject (”ADODB.Command”)
Fastställd adoConnection = CreateObject (”ADODB.Connection”)
adoConnection.Provider = ”ADsDSOObject”,
adoConnection.Open ”aktivarkivfamiljeförsörjare”,
Uppsättning adoCommand.ActiveConnection = adoConnection
'För aktivarkiv för sökande helt område.
Fastställd objRootDSE = GetObject (”LDAP: //RootDSE”)
strDNSDomain = objRootDSE.Get (”defaultNamingContext”)
strBase = "",
'Filtrera på användare med ”denWindows 2000 inloggningen” namnger.
strFilter = ”(sAMAccountName=” & strUser &”) ”,
'Det avgränsade kommat listar av attribut värderar för att hämta.
strAttributes = ”sAMAccountName”,
'Tankeskapelse LDAP-syntaxqueryen.
strQuery = strBase & ”; ” & strFilter & ”; ” & strAttributes & ”; subtree”,
adoCommand.CommandText = strQuery
adoCommand.Properties (”sida storleksanpassar”), = 100
adoCommand.Properties (”frånslagningstid”) = 30
adoCommand.Properties (”cachen resulterar”), = falskt
'Kör queryen.
Fastställd adoRecordset = adoCommand.Execute
'Enumerate den resulterande recordseten.
Gör till adoRecordset.EOF
'Hämta värderar.
strName = adoRecordset.Fields (”sAMAccountName”). Värdera
'Kontrollera om användaren redan en medlem av lokaladministratörgruppen.
Om (objAdmin.IsMember (”WinNT: /” & strDomain & ”/” & strName) = falskt) därefter
På felmeritförteckning därefter
'Tillfoga denna användare till gruppen.
objAdmin.Add (”WinNT: /” & strDomain & ”/” & strName)
Om (Err.Number <> 0) därefter
objLogFile.WriteLine-strComputer & ”; ” & strUser & ”; Fel”,
annars
WScript.Echo-strName & ”tillfogades.”,
objLogFile.WriteLine-strComputer & ”; ” & strUser & ”; Framgång”,
Avsluta om
annars
WScript.Echo-strName & ”finns redan.”,
objLogFile.WriteLine-strComputer & ”; ” & strUser & ”; Framgång”,
Avsluta om
'Flyttning till det nästa rekordet i recordseten.
adoRecordset.MoveNext
Kretsa
'Rent övre.
adoRecordset.Close
adoConnection.Close
Avsluta suben
Fungera pingen (strHost)
dunkel objPing, objRetStatus
uppsättning som objPing = GetObject (”winmgmts: {impersonationLevel=impersonate}”) .ExecQuery-_,
(”välj * från Win32_PingStatus var tilltala = ”” & strHost & ”” ”),
för varje objRetStatus, i objPing
om IsNull (objRetStatus.StatusCode) eller objRetStatus.StatusCode0<> därefter
Ping = falskt
'WScript.Echo ”statuskod är” & objRetStatus.StatusCode
annars
Pingen = True
'Wscript.Echo ”byte =” & vbTab & objRetStatus.BufferSize
'Wscript.Echo ”Time (ms) =” & vbTab & objRetStatus.ResponseTime
'Wscript.Echo ”TTL (s) =” & vbTab & objRetStatus.ResponseTimeToLive
avsluta om
därefter
Avsluta fungerar
|