Option explicite
Faible adoCommand, adoConnection, strBase, strFilter, strAttributes
Faible objLogFile, objInputFile, objFileSystem, objRootDSE, strDNSDomain, strQuery, adoRecordset, strName
Faible objNetwork, strComputer, strUser, objAdmin, strDomain
Faibles lignes, marques, ligne
Placer l'objFileSystem = le CreateObject (« Scripting.fileSystemObject »)
Placer objInputFile = objFileSystem.OpenTextFile (« C:\temp\users.txt », 1)
les lignes = se sont dédoublées (objInputFile.ReadAll, le vbNewline)
objInputFile.Close
objLogFile réglé = objFileSystem.CreateTextFile (« C:\temp\users.log », 2)
Pour chaque ligne dans les lignes
les marques = se sont dédoublées (ligne, « ; ")
strComputer = équilibre (marques (0))
strUser = équilibre (marques (1))
si le cinglement (strComputer) = rectifient alors
le strComputer d'objLogFile.WriteLine et « a entré en contact »
strComputer d'AddUserGroup, strUser
Autrement
le strComputer d'objLogFile.WriteLine et « n'a pas pu être entré en contact »
finir si
Après
objLogFile.Close
AddUserGroup secondaire (strComputer, strUser)
'Rechercher le nom d'ordinateur local et le nom de NetBIOS du domaine.
Placer l'objNetwork = le CreateObject (« Wscript.Network »)
strDomain = objNetwork.UserDomain
WScript.Echo « s'ajoutent » et strUser et « à » et strComputer
'Grippage au groupe d'administrateurs locaux.
Placer l'objAdmin = le GetObject (« WinNT : / » et strComputer et « /Administrators, groupe »)
'Objets d'AGITATION d'installation.
Placer l'adoCommand = le CreateObject (« ADODB.Command »)
Placer l'adoConnection = le CreateObject (« ADODB.Connection »)
adoConnection.Provider = « ADsDSOObject »
adoConnection.Open « fournisseur actif d'annuaire »
Placer adoCommand.ActiveConnection = adoConnection
'Rechercher le domaine actif entier d'annuaire.
Placer l'objRootDSE = le GetObject (« LDAP : //RootDSE »)
strDNSDomain = objRootDSE.Get (« defaultNamingContext »)
strBase = ""
'Filtre sur l'utilisateur avec le nom « d'ouverture de pré-Windows 2000 ».
strFilter = « (sAMAccountName= » et strUser et ") «
'Liste délimitée par virgule de valeurs d'attribut à rechercher.
strAttributes = « sAMAccountName »
'Construire la question de syntaxe de LDAP.
strQuery = strBase et « ; » et strFilter et « ; » et strAttributes et « ; sous-arbre »
adoCommand.CommandText = strQuery
adoCommand.Properties (« taille de page ») = 100
adoCommand.Properties (« temps mort ») = 30
adoCommand.Properties (la « cachette résulte ») = faux
'Courir la question.
Placer l'adoRecordset = l'adoCommand.Execute
'Énumérer le recordset en résultant.
Faire jusqu'à adoRecordset.EOF
'Rechercher les valeurs.
strName = adoRecordset.Fields (« sAMAccountName »). Valeur
'Vérifier si utilisateur déjà un membre du groupe d'administrateurs locaux.
Si (objAdmin.IsMember (« WinNT : / » et strDomain et « / » et strName) = faux) puis
Sur le résumé d'erreur après
'Ajouter cet utilisateur au groupe.
objAdmin.Add (« WinNT : / » et strDomain et « / » et strName)
Si (Err.Number <> 0) puis
strComputer d'objLogFile.WriteLine et « ; » et strUser et « ; Échec »
autrement
Le strName de WScript.Echo et « a été ajouté. »
strComputer d'objLogFile.WriteLine et « ; » et strUser et « ; Succès »
Finir si
autrement
Le strName de WScript.Echo et « existe déjà. »
strComputer d'objLogFile.WriteLine et « ; » et strUser et « ; Succès »
Finir si
'Se déplacer au prochain disque dans le recordset.
adoRecordset.MoveNext
Boucle
'Nettoyer.
adoRecordset.Close
adoConnection.Close
Finir le sous-marin
Cinglement de fonction (strHost)
faible objPing, objRetStatus
objPing réglé = GetObject (« winmgmts : {impersonationLevel=impersonate} _ de ").ExecQuery
(« choisir * à partir de Win32_PingStatus où adresse = « » et strHost et « » ")
pour chaque objRetStatus dans objPing
s'IsNull (objRetStatus.StatusCode) ou objRetStatus.StatusCode0<> alors
Cinglement = faux
'WScript.Echo « code statut est » et objRetStatus.StatusCode
autrement
Le cinglement = rectifient
'Wscript.Echo « bytes = » et vbTab et objRetStatus.BufferSize
'Wscript.Echo « temps (Mme) = » et vbTab et objRetStatus.ResponseTime
'Wscript.Echo « TTL (s) = » et vbTab et objRetStatus.ResponseTimeToLive
finir si
après
Fonction de fin
|