vbscript to extract shares, share permissions, folder permissions from Windows 2008 server and others





Command on server:
"Shares&Permission.vbs" access_test.log

My example output:
https://docs.google.com/spreadsheets/d/15h3xZJmAB7lVhqRT-1t5lSAB0JQhhqgRl8bTulMgeSc/edit?usp=sharing

 



Vb script code, file name "Shares&Permission.vbs" :

strComputer = "."
StrReportFile = Trim(WScript.Arguments(0))
Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Set WriteHandle = ObjFSO.OpenTextFile(StrReportFile, 2, True, 0)
Set ObjWMI = GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & StrComputer & "\Root\CIMV2")

Set ColShares = ObjWMI.ExecQuery("Select Name, Type, Path From Win32_Share", "WQL",  &h10 + &h20)
WriteHandle.WriteLine "Permission;ShareName;Path;Domain;Name;Type" & ShareName
For Each Share In ColShares
    str="Folder;"
    If Share.Type = 0 Then
         ShareName = Share.Name
        SharePath = Share.Path
        If StrComp(ShareName, "Print$", vbTextCompare) <> 0 Then
            str=str & ShareName & ";" & SharePath & ";"
             Set Folder = GetObject("WinMgmts:\\" & StrComputer & "\Root\CIMV2:Win32_LogicalFileSecuritySetting.path='" & SharePath & "'")
             foldernameRetVal = Folder.GetSecurityDescriptor(foldername)
             RetVal = Folder.GetSecurityDescriptor(foldername)
             ObjDACL = foldername.DACL
             For Each WMIAce In ObjDACL
                 Set Trustee = WMIAce.Trustee
                Select Case WMIAce.AccessMask
                    Case 2032127
                        WriteHandle.WriteLine str & Trustee.Domain & ";" & Trustee.Name & ";FULL CONTROL"
                    Case 1245631
                        WriteHandle.WriteLine str & Trustee.Domain & ";" & Trustee.Name & ";MODIFY"
                    Case 1180095
                        WriteHandle.WriteLine str & Trustee.Domain & ";" & Trustee.Name & ";READ/WRITE"
                    Case 1179817
                        WriteHandle.WriteLine str & Trustee.Domain & ";" & Trustee.Name & ";READ ONLY"
                    Case Else
                        'WriteHandle.WriteLine str & Trustee.Domain & ";" & Trustee.Name & ";CUSTOM"
                End Select
                Set Trustee = Nothing
             Next
        End If
     End If
Next

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalShareSecuritySetting")
For Each objItem In colItems
    str="Share;"
    Set colShr = objWMIService.ExecQuery("Select * from win32_share where name='" & objItem.Name & "'")
    For Each objShr in colShr
        str=str & objItem.Name & ";" & objShr.Path & ";"
    Next
    intRtn = objItem.GetSecurityDescriptor(wmiSecurityDescriptor)
    colDACLs = wmiSecurityDescriptor.DACL
    For Each objACE In colDACLs
        Set objUserGroup = objACE.Trustee
        Select Case objACE.AccessMask
        Case 1179817
            WriteHandle.WriteLine str & objUserGroup.Domain & ";" & objUserGroup.Name & ";READ"
        Case 1245631
            WriteHandle.WriteLine str & objUserGroup.Domain & ";" & objUserGroup.Name & ";CHANGE"
        Case 2032127
            WriteHandle.WriteLine str & objUserGroup.Domain & ";" & objUserGroup.Name & ";FULL CONTROL"
        End Select
    Next
Next
Set ColShares = Nothing
Set ObjWMI = Nothing
WriteHandle.Close
Set WriteHandle = Nothing
Set ObjFSO = Nothing
WScript.Quit

Comentarii