TUTOS.EU

Lister des partages d'un serveur Windows avec les droits associés

Comment récupérer la liste des partages d'un serveur windows avec les droits associés aux partages

Le vbscript ci-dessous génère un fichier type csv.
Collez son contenu dans un tableau excel pour avoir un résultat de ce type :

Copiez le script sur le serveur à examiner et double-cliquez dessus.
Le résultat sera généré dans un fichier à côté du script :

Option Explicit

Dim strComputer : strComputer = "."
Dim objWMIService : Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Dim colItems : Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalShareSecuritySetting")
Dim objShareSecuritySetting, intRtn, wmiSecurityDescriptor
Dim colDACLs, objACE, objUserGroup, strPermission, colShr, objShare
Dim varSharName, varSharPath, varUserOrGroup, UneLigne

Dim objFSO, objTextFile
Dim NomFichier, CheminFichier, CheminScriptActuel, ScriptFileName, Position

'Déclaration des constantes
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8

ScriptFileName = wscript.scriptname
Position = InstrRev(ScriptFileName,".")
if (Position > 0) Then ScriptFileName = Left(ScriptFileName, Position - 1)

NomFichier = ScriptFileName & "_Result.txt"

CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichier = CheminScriptActuel & "\" & NomFichier 'Déclaration du chemin et du nom du fichier

If Len(CheminFichier) > 0 Then
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objTextFile = objFSO.OpenTextFile(CheminFichier, ForWritting, True)
	objTextFile.WriteLine "Share Name" & VbTab & "Path" & VbTab & "Group Name" & VbTab & "Permissions"

	For Each objShareSecuritySetting In colItems
		varSharName = ""
		varSharName = objShareSecuritySetting.Name

		Set colShr = objWMIService.ExecQuery("Select * from win32_share where name='" & objShareSecuritySetting.Name & "'")
		For Each objShare in colShr
			varSharPath = objShare.Path
			Exit For
		Next

		intRtn = objShareSecuritySetting.GetSecurityDescriptor(wmiSecurityDescriptor)
		colDACLs = wmiSecurityDescriptor.DACL

		For Each objACE In colDACLs
			UneLigne = ""
			varUserOrGroup = ""
			Set objUserGroup = objACE.Trustee
			varUserOrGroup = objUserGroup.Name
			If IsNull(varUserOrGroup) = True Then varUserOrGroup = "SID non resolu"
			UneLigne = varSharName & VbTab & varSharPath & VbTab & varUserOrGroup

			Select Case objACE.AccessMask
				Case 1179817 strPermission = "READ"
				Case 1245631 strPermission = "CHANGE"
				Case 2032127 strPermission = "FULL CONTROL"
			End Select
			
			Set objUserGroup = Nothing

			UneLigne =  UneLigne & VbTab & strPermission
			objTextFile.WriteLine UneLigne
		Next

	Next
	
	objTextFile.Close 'Fermeture du fichier

	Set objTextFile = Nothing
	Set objFSO = Nothing
Else
	Wscript.echo "Operation annulee"
End If 'CheminFichier
Lien vers le fichier : cliquez ici

Pages Web

Site WebDescription
Saltwetbytes.wordpress.comScript d'origine que j'ai modifié pour ce besoin