Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Obtenir la liste des permissions de sécurité d'un répertoire

3 réponses
Avatar
Olivier
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:\GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C:\ drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:\\testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
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
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

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

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier

3 réponses

Avatar
Thierry DEMAN [MVP]
Bonsoir,

Voici un lien sur un petit script qui réalise cela :
http://base.faqexchange.info/documents%20partages/Scripting/VbScript/showperms.vbs.TXT

C'est cette partie-ci qui te donnera les droits de chaque "entrée".

Set oDacl = oSD.DiscretionaryAcl
For each wmiAce in oDACL

' Trustee = wmiAce.Trustee
select Case int(wmiAce.AccessMask)
case 2032127
droits="FULL"
case 1179817
droits="RX"
case -1610612736
droits="RXe"
case 1245631
droits="RWX"
case 268435456
droits="FULL SUB ONLY"
case else
droits=Cstr(wmiAce.AccessMask)
end select
wscript.echo "Perms="&Droits&" Account=" & wmiAce.Trustee&"
level="&Cstr(Level)
Next

A+
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Olivier" a écrit dans le message de
news:
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript
pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès
sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C: drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
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
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

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

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider
pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y
perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier


Avatar
Olivier
C'est parfait, je vous remercie de votre aide. Maintenant je comprend bien
mieux.

"Thierry DEMAN [MVP]" wrote:

Bonsoir,

Voici un lien sur un petit script qui réalise cela :
http://base.faqexchange.info/documents%20partages/Scripting/VbScript/showperms.vbs.TXT

C'est cette partie-ci qui te donnera les droits de chaque "entrée".

Set oDacl = oSD.DiscretionaryAcl
For each wmiAce in oDACL

' Trustee = wmiAce.Trustee
select Case int(wmiAce.AccessMask)
case 2032127
droits="FULL"
case 1179817
droits="RX"
case -1610612736
droits="RXe"
case 1245631
droits="RWX"
case 268435456
droits="FULL SUB ONLY"
case else
droits=Cstr(wmiAce.AccessMask)
end select
wscript.echo "Perms="&Droits&" Account=" & wmiAce.Trustee&"
level="&Cstr(Level)
Next

A+
--
Thierry DEMAN-BARCELÒ
Exchange MVP, MCSE2003+M,MCSE2003+S,MCDBA,MCITP dba&Dev
http://base.faqexchange.info http://www.faqexchange.info
http://ISAFirewalls.org

"Olivier" a écrit dans le message de
news:
Bonjour à tous,

Depuis à certain nombre d'heure, je recherche une solution en VBScript
pour
réaliser la chose suivante :

J'aimerais faire un script, pour un utilisateur, qui va rechercher les
permissions sur des répertoire réseaux. Par exemple, j'aimerais avoir une
liste d'utilisateur qui ont une autorisation sur W:GroupeIT et savoir si
c'est un accès Read ou R/W. Cela affin d'exporter les résultats dans un
fichier Excell. J'arrive à voir les listes des utilisateurs qui ont accès
sur
un répertoire mais je ne vois pas les droits.

J'ai trouvé sur MSDN le code suivante :

*******************************************

On Error Resume Next
' The folder named "testfolder" must exist on the C: drive.

Set wmiFileSecSetting = GetObject( _
"winmgmts:Win32_LogicalFileSecuritySetting.path='c:testfolder'")

RetVal = wmiFileSecSetting. _
GetSecurityDescriptor(wmiSecurityDescriptor)
If Err <> 0 Then
WScript.Echo "GetSecurityDescriptor failed" _
& VBCRLF & Err.Number & VBCRLF & Err.Description
WScript.Quit
Else
WScript.Echo "GetSecurityDescriptor succeeded"
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
wscript.echo "Trustee Domain: " & Trustee.Domain
wscript.echo "Trustee Name: " & Trustee.Name

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

Next

****************************************************

Mais cela ne résoud pas mon problème. Est-ce que quelqu'un peut m'aider
pour
résoudre ce problème ? Je sais qu'il existe le script XCACLS mais je m'y
perd
un peux dans ce script.

En vous remerciant d'avance de votre aide,
Olivier





Avatar
Méta-MCI
Bonjour !

En invite de commande :
CACLS W:GroupeIT

On peut lancer la commande, depuis VBscript, avec RUN.
Le résultat peut être détourné sur un PIPE, ou dans un fichier.

@-salutations

Michel Claveau