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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 23
    Points : 19
    Points
    19

    Par défaut Dossier partagés, quels users?

    Bonjour les as!

    Je souhaite récupérer la liste des permissions accordées sur tous les dossiers partagés d'un serveur donné. Pour le moment, avec un script qui figure plus bas, je récupère tous les dossiers partagés, reste donc à renseigner tous les comptes NT. A vos neurones.


    Code pour récupérer les dossiers partagés:
    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
    ForAppending = 8
    ResFIL = "c:\Dossiers_Partages.txt"
    set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFIL = oFSO.opentextfile(ResFIL, ForAppending, TRUE)
    Set oSHL = CreateObject("WScript.Shell")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")
    For each oSHARE in colShares
      oFIL.write(oSHARE.caption & ";" & oSHARE.Name & ";" & oSHARE.Path & ";" & oSHARE.Type) & vbcrlf
      oFIL.write "net share " & oSHARE.Name & " >>" & ResFIL & vbcrlf
      oSHL.run "net share " & oSHARE.Name & " >>" & ResFIL, 10, FALSE
    Next
    oFIL.close
    set oFIL = nothing
    set oFSO = nothing
    set oSHL = nothing

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : décembre 2002
    Messages : 1 082
    Points : 916
    Points
    916

    Par défaut

    Je ne suis pas vraiment un pro de vbs et de WMI. Mais je pense que ceci pourrait t'aider.
    http://msdn2.microsoft.com/en-us/library/aa394435.aspx

    AccessMask et GetAccessMask devrait t'aider.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 23
    Points : 19
    Points
    19

    Par défaut c bon maintenant, merci pour la dernière indication

    ... j'ai pu trouver une référence adequate:

    ce qui me manquait était : Win32_LogicalShareSecuritySetting


    Voici mon script complet... et bien entendu à améliorer pour ceux qui voudraient obtenir plus d'infos.


    on error resume next
    ForAppending = 8
    ResFIL = "Dossiers_Partages.csv"
    set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFIL = oFSO.opentextfile(ResFIL, ForAppending, TRUE)
    oFIL.write("NOM;CHEMIN;COMPTE_NT") & vbcrlf
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")
    For each oSHARE in colShares
    'oFIL.write(oSHARE.caption & ";" & oSHARE.Name & ";" & oSHARE.Path & ";" & oSHARE.Type) & vbcrlf
    'msgbox oSHARE.Name

    if oSHARE.Type = 0 then
    Set wmiFileSecSetting = GetObject( _
    "winmgmts:Win32_LogicalShareSecuritySetting.Name='" & oSHARE.Name & "'")
    if Err <>0 then
    oFIL.write("@" & oSHARE.name & ";Echec analyse LogicalShare") & vbcrlf
    err.clear
    Else
    RetVal = wmiFileSecSetting.GetSecurityDescriptor(wmiSecurityDescriptor)
    If Err <> 0 Then
    WScript.Echo "GetSecurityDescriptor failed" _
    & VBCRLF & Err.Number & VBCRLF & Err.Description
    WScript.Quit
    End If

    ' Retrieve the DACL array of Win32_ACE objects.
    DACL = wmiSecurityDescriptor.DACL

    For each wmiAce in DACL

    'wscript.echo "Access Mask: " & wmiAce.AccessMask
    'wscript.echo "ACE Type: " & wmiAce.AceType

    ' Get Win32_Trustee object from ACE
    Set Trustee = wmiAce.Trustee
    'oFIL.write(oSHARE.caption & ";" & Trustee.Domain)
    oFIL.write(oSHARE.Name & ";" & oSHARE.Path & ";" & Trustee.Name) & vbcrlf

    ' Get SID as array from Trustee
    'SID = Trustee.SID
    'strsid = join(SID, ",")
    'wscript.echo "Trustee SID: {" & strsid & "}"

    Next
    End if

    Set wmiFileSecSetting = nothing
    End if
    Next
    oFIL.close
    set oFIL = nothing
    set oFSO = nothing

    msgbox "Terminé !"


Discussions similaires

  1. Recuperer nom local d'1 dossier partagé depuis Poste Client
    Par bib34690 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 14/10/2005, 20h51
  2. Réponses: 4
    Dernier message: 12/10/2005, 16h13
  3. (MS DOS) Création d’un dossier partager
    Par Furius dans le forum Windows
    Réponses: 18
    Dernier message: 06/10/2005, 19h19
  4. Accès refusé sur un dossier partagé après formatage
    Par musicmandj5 dans le forum Windows XP
    Réponses: 4
    Dernier message: 02/10/2005, 18h19
  5. [reseau] Lister dossiers partagés
    Par difficiledetrouver1pseudo dans le forum APIs
    Réponses: 12
    Dernier message: 04/09/2005, 00h01

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