IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

connaitre les comptes utilisateurs administrateur local à l'aide d'un script


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut connaitre les comptes utilisateurs administrateur local à l'aide d'un script
    Bonjour,
    svp,
    je cherche quelqu'un qui peut m'aider ou m'orienter, pour faire un scirpt WMI sur l'Active directory de windows serveur 2003 dans une société, qui consiste à chercher la liste des gens qui sont admin locaux sur leurs machines (peut être a l'aide de la AD) avec éventuelle quelques informations sur son nom d'utlisateur et ses comptes créer par ce dernier et quelques informations utiles comme son nom et prénom (car le compte est en général comme suit Prénom.Nom)

    sachant que je suis débutant.

    Merci d'avance par votre attention

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 36
    Par défaut
    Salut à toi jeune padawan

    L'AD ne pourra t'aider que pour avoir une liste des machine de ton parc.

    Je te laisse te débrouiller pour :
    1) récupérer la liste des machines qui t'intéressent
    2) construire le code qui va lire ta liste de machines et exécuter la procédure ci-dessous qui revoie tous les objets membre du groupe "Administrateurs" à l'exception du compte "Administrateur" et du groupe "Admins du domaine" (le nom des groupes est à adapter en fonction de la langue de ton infra)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SUB SearchLocalAdmin(strClient)
      Dim aUser, oGroup
      Set oGroup = GetObject("WinNT://" & strClient & "/Administrators")
      For Each aUser in oGroup.Members
       IF  LCase(aUser.Name)<>"administrator" _
        And LCase(aUser.Name)<>"domain admins" THEN
         Wscript.Echo & vbTab & sPC & " | " & aUser.Name
        END IF
      NEXT
    Set aUser  = Nothing
    Set oGroup = Nothing
    END SUB

  3. #3
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Salut.

    Ca tombe assez bien pour toi car j'ai récemment fait un script pour des besoins persos qui semble correspondre à ta demande.

    Fonctionnement :
    - Récupération de toutes les machines de l'AD contenant le mot "server" dans la description de leur OS.
    - Puis connexion à chacune de ces machines pour obtenir les comptes du groupe Administrateurs.
    - Le tout est placé dans un tableau, que je lis en fin de script pour l'affichage.

    Je n'ai pas du tout commenté le code, mais ce n'est pas très compliqué de s'y retrouver avec la description que j'ai fait.

    Voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Const ADS_SCOPE_SUBTREE = 2
     
    Set objRootDSE = GetObject("LDAP://rootDSE")
     
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = ("ADsDSOObject")
    objConnection.Open
     
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" & _
    	"(operatingSystem=*Server*));dNSHostName,operatingSystem;subtree"
     
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
     
    Set objRecordSet = objCommand.Execute
    If objRecordset.RecordCount > 0 Then
    	objRecordSet.MoveFirst
     
    	Redim arrServerInformation(2)
     
    	intCounter = 0
    	Do Until objRecordSet.EOF
    		Redim Preserve arrDomainservers(intCounter)
     
    		strComputer = objRecordSet.Fields("dNSHostName").Value
    		arrServerInformation(0) = strComputer
    		arrServerInformation(1) = objRecordSet.Fields("operatingSystem")
    		strAminUsers = ""
     
    		Set colGroups = GetObject("WinNT://" & strComputer & "")
    		colGroups.Filter = Array("group")
    		For Each objGroup In colGroups
    			If objGroup.Name = "Administrateurs" OR objGroup.Name = "Administrators" Then
    				strAminUsers = objGroup.Name & " : " & vbCrLf
    				For Each objUser in objGroup.Members
    					strAminUsers = strAminUsers & vbTab & objUser.Name & vbCrLf
    				Next
    			End If
    		Next
     
    		arrServerInformation(2) = strAminUsers
    		arrDomainservers(intCounter) = arrServerInformation
    		intCounter = intCounter + 1
    		objRecordSet.MoveNext
    	Loop
    End If
    objConnection.Close
     
    WScript.Echo intCounter & " serveurs"
     
    For Each  arrServerInformation In arrDomainservers
    	WScript.Echo arrServerInformation(0) & " ; " & arrServerInformation(1) & " ; " & arrServerInformation(2)
    Next
    Attention le script peu être long si tu as beaucoup de serveurs.
    En espérant avoir pu t'aider.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Bonjour,

    Merci beaucoup pour vos réponses je vais les essayer

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Bonjour, Merci pour le script,
    j'ai compris comment il fonctionne, mais moi je ne veut pas récuperer les noms des serveurs donc pour ce cas j'arrive pas a changer le script suivant pour avoir les noms des autres PC sauf les serveurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" & _
    	"(operatingSystem=*Server*));dNSHostName,operatingSystem;subtree"
    j'ai essayé ça mais il ne marche pas comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" &");dNSHostName,operatingSystem;subtree"
    y'a il une sollution
    Merci d'avance de votre attetion

  6. #6
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Salut,

    ça c'est pour récupérer que les serveurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" & _
    	"(operatingSystem=*Server*));dNSHostName,operatingSystem;subtree"
    Donc si tu veux le contraire (que les postes), essaye quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" & _
    	"(operatingSystem!=*Server*));dNSHostName,operatingSystem;subtree"

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 163
    Par défaut
    Salut,

    Merci, pour votre réponse, je lai essayé mais ça marche pas, en faite j'ai trouvé dans un site web que pour les autres PC à par les serveurs se sont des PC professionels comme suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    objCommand.CommandText = "<LDAP://" & objRootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Computer)" & _
    	"(operatingSystem=*Professional*));dNSHostName,operatingSystem;subtree"
    et Merci pour vos codes il m'ont bien aidés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre si un compte utilisateur est local ou domaine
    Par worldcompan dans le forum VBScript
    Réponses: 0
    Dernier message: 18/01/2011, 15h17
  2. Réponses: 2
    Dernier message: 10/05/2010, 22h11
  3. Réponses: 5
    Dernier message: 05/03/2009, 23h39
  4. Reparamétrer les comptes utilisateurs ?
    Par ghohm dans le forum Administration système
    Réponses: 4
    Dernier message: 11/09/2006, 11h55
  5. Réponses: 12
    Dernier message: 25/08/2006, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo