Showing posts with label Windows. Show all posts
Showing posts with label Windows. Show all posts

Tuesday, March 11, 2014

Share Permission VBScript

I was struggling  to find share permission for couple of servers.  After a long search I found a script to fetch the Share permission. It is modified to get the remote server share permission and I have included a decent error handling to it.


On Error Resume Next
Const ForReading = 1
Const ForWriting = 2
Dim strComputer
Dim objWMIService
Dim colItems
Dim objItem, intRtn, wmiSecurityDescriptor
Dim colDACLs, objACE, objUserGroup, strPermission 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("server.txt", ForReading)
Set objFile1 = objFSO.CreateTextFile("Share.csv", ForWriting)
Set objFile2 = objFSO.CreateTextFile("Share_Error.csv", ForWriting)
objFile1.write "computername,sharename,User/Group,Permission"
objFile1.WriteLine 
objFile2.write "computername,Error Number,Description"
objFile2.WriteLine
Do Until objFile.AtEndOfStream 
  
strComputer = objFile.ReadLine
     
Set objWMIService = GetObject("winmgmts:\\" & _
                             strComputer & "\root\cimv2")
if  Err.Number = 0  then                            
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalShareSecuritySetting")
     For Each objItem In colItems
        
         intRtn = objItem.GetSecurityDescriptor(wmiSecurityDescriptor)
     
         colDACLs = wmiSecurityDescriptor.DACL
         
         For Each objACE In colDACLs
             Set objUserGroup = objACE.Trustee
     
             Select Case objACE.AccessMask
                 Case 1179817 strPermission = "READ"
                 Case 1245631 strPermission = "CHANGE"
                 Case 2032127 strPermission = "FULL CONTROL"
             End Select
             
            objFile1.write strComputer & "," & objItem.Name & "," & UCase(objUserGroup.Name) & ","  & strPermission 
   objFile1.WriteLine 
         Next
     Next
Err.Clear
Else
objFile2.write strComputer & "," & Err.Number & "," & Err.Description
objFile2.WriteLine 
Err.Clear
End If
loop
objFile1.close
objFile2.close
objFSO.close