On Error Resume Next
dim sServer, obj_Share
dim wshNetwork, wshell
dim fso, f
WScript.Timeout = 432000 'Specifies 5 Day script timeout - should be long enough !!!
if Wscript.Arguments.Count <1 then
wscript.echo VBCRLF& "OOPS! You failed to specify a server." & VBCRLF
ShowUsage
Wscript.quit
end if
if Wscript.Arguments.Count >0 then
if Wscript.Arguments(0)="/?" then
wscript.echo VBCRLF
ShowUsage
wscript.quit
end if
sServer=Wscript.Arguments(0)
end if
Set wshell=Wscript.Createobject("Wscript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set fso=CreateObject("Scripting.FileSystemObject")
Set f=fso.CreateTextFile(wscript.arguments(0)&"-S.txt")
f.Writeline "Checking Server " & sServer & " for Shares - " & NOW & vbcrlf
f.Close
'wscript.echo "Checking Server " & sServer & " for Shares."
set OBJ_Share= GetOBJect("WinNT://" & sServer &"/lanmanserver")
if err.number<>0 then
wscript.echo "Error #"&err.number& ": " & err.description
wscript.echo "There was a problem connecting to " &sServer
wscript.quit
else
' wscript.echo "Server Name = " & sServer
For each share in OBJ_Share
set f=fso.OpenTextFile(wscript.arguments(0)&"-S.txt",8)
wscript.echo "Examining \\" & sServer & "\" & share.name
'Get list of subdirectories
f.WriteLine "============================================================================" & vbcrlf
f.WriteLine " Share Name = " & share.name
f.WriteLine " Share Path = " & share.path
f.WriteLine " Share Size = " & share.size
f.WriteLine " Description = " & share.description & vbcrlf
f.Close
'give file a chance to close before continuing
wscript.sleep 2000
wscript.echo " Checking subfolders...please wait"
GetDirTree "\\" & sServer & "\" & share.name
Next
End If
wscript.echo "See " & sServer & "-S.txt For results"
Set sServer=Nothing
set obj_Share=Nothing
wscript.quit
'//////////////////////////
'/ Get Directory Tree /
'//////////////////////////
Sub GetDirTree(dir)
Dim oFolder,oFolders,item
On Error Resume Next
Set oFolder=fso.GetFolder(dir)
set oFolders=oFolder.SubFolders
' get all sub-folders in this folder
For Each item In oFolders
'wscript.echo item.Path
set f=fso.OpenTextFile(wscript.arguments(0)&"-S.txt",8)
f.WriteLine "--------------------------------------------------------------------"
f.WriteLine ( vbcrlf & "*** For Path " & CHR(34) & cstr(item.path) & CHR(34) & " The Folder Size is = " & int(item.size / 1048576) & " Mb ***" )
f.WriteLine ( vbcrlf & "*** Folder Permissions ***")
f.Close
'give file a chance to close before continuing
wscript.sleep 2000
c=wshell.Run("cmd /c " & "cacls " & CHR(34) & item.Path & CHR(34) & " >>" & sServer & "-S.txt",0,True)
GetDirTree(item)
Next
End Sub
'//////////////////////////
'/ Show Usage /
'//////////////////////////
Function ShowUsage
wscript.echo "Usage: " & Wscript.ScriptName
wscript.echo "Cscript auditshareperms.vbs [servername]"
wscript.echo " Example: cscript auditshareperms.vbs filesrv01" & vbCrlf
wscript.echo "Cscript auditshareperms.vbs /? will display this help message"
End Function