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

Windows Discussion :

Jointure de tables WMI en VBS


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mars 2006
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Jointure de tables WMI en VBS
    Bonjour à tous,
    je voudrais lister les droits de tous les répertoires partagés (pour l'instant je me limite au PC local) mais j'ai quelques petits soucis au niveau des jointures entre les tables dont j'ai besoin.

    Voici mon code :
    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
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Share",,48)
    cpt=1
    For Each objItem in colItems
    	If objItem.Type = 0 Then
    		'wscript.echo "dossier partage"
    		Wscript.Echo "Partage n°" & cpt
    		cpt=cpt+1
    		Wscript.Echo "Nom du partage: " & objItem.Name
    		Wscript.Echo "Chemin d'accès: " & objItem.Path
    		'Wscript.Echo "Type de partage: " & objItem.Type
    	End If
    
    	' The Win32_LogicalShareSecuritySetting
    	'jointure entre les tables Win32_LogicalShareSecuritySetting et objItem (Win32_Share)
    	'wmiFileSecSetting est une instance de la classe Win32_LogicalShareSecuritySetting
    	Set wmiFilesSecSetting = objWMIService.ExecQuery("select * from Win32_LogicalShareSecuritySetting")
    	'Set wmiFileSecSetting = GetObject("winmgmts:Win32_LogicalShareSecuritySetting.Name='" & objItem.Name & "'")
    	If objItem.Name = Win32_LogicalShareSecuritySetting.Name Then
    		wscript.echo "nom du dossier partagé " & wmiFileSecSetting.Name
    
    		'il faut désormais trouver les groupes qui ont un lien avec le fichier partagé
    		'requete afin de trouver la référence du membre
    		'Set LSAItems = objWMIService.ExecQuery("select * from Win32_LogicalShareAccess")
    		Set LSAItems = GetObject("winmgmts:Win32_LogicalShareAccess.SecuritySetting='" & wmiFileSecSetting & "'")
    		WScript.echo "nom de LSAItems " & LSAItems.Name
    		For each ref in LSAItems
    			'If ref.SecuritySetting = wmiFileSecSetting Then
    				WSCript.echo "nom de droite : " & ref.SecuritySetting
    				WSCript.echo "nom de gauche : " & wmiFileSecSetting.Name
    				
    				Set SIDItems = objWMIService.ExecQuery("select * from Win32_SID")
    				For each ligne_SIDItems in SIDItems
    					If ligne_SID = LSAItems.Trustee Then
    						WScript.Echo "nom du groupe de gauche " & ligneSID.SID
    						WScript.echo "nom du groupe de droite " & LSAItems.Trustee.SID
    					End If
    				Next
    			'End If
    		Next
    	End If
    Next
    Je voulais également savoir quelle était la signification de GetObject dans ce genre d'utilisation car je me suis inspiré d'in code que j'ai trouvé à cette page : http://www.developpez.net/forums/arc.../t-223822.html

    Sur le site de Msdn j'ai pu trouvé des informations sur les différentes classes que je devais utiliser :
    class Win32_Share
    {
    uint32 AccessMask;
    boolean AllowMaximum;
    string Caption;
    string Description;
    datetime InstallDate;
    uint32 MaximumAllowed;
    string Name;
    string Path;
    string Status;
    uint32 Type;
    };

    class Win32_LogicalShareAccess : Win32_SecuritySettingAccess
    {
    uint32 AccessMask;
    string GuidInheritedObjectType;
    string GuidObjectType;
    uint32 Inheritance;
    Win32_LogicalShareSecuritySetting ref SecuritySetting;
    Win32_SID ref Trustee;
    uint32 Type;
    };

    class Win32_SID
    {
    string AccountName;
    uint8 BinaryRepresentation[];
    string ReferencedDomainName;
    string SID;
    uint32 SidLength;
    };

    class Win32_LogicalShareSecuritySetting : Win32_SecuritySetting
    {
    string Caption;
    uint32 ControlFlags;
    string Description;
    string Name;
    string SettingID;
    };
    Nous pouvons voir qu'il y a dans certaines tables "ref" ce qui signifie qu'une jointure est possible mais je ne sais pas comment faire !

    Merci de vos réponses.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mars 2006
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Up !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mars 2006
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Je n'ai pas trouvé de solution donc j'ai contourné les problèmes!

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 19h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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