Monitor Share Usage for File Server Migration

by Leon Funnell [Published on 7 April 2005 / Last Updated on 7 April 2005]

How to monitor share access on a file server.

I needed a way to monitor the usage of particular shares on a file server as we are looking to move to a clustered file server, and you need to create a resource for every share. 

Our existing file server has many shares on it, but most of them are unused, as we point most users through DFS.  I could not find any way of collating information as to which SHARES where used to connect to a particular file, as auditing only tells you which files are actually accessed.  To this end, I wrote a simple vb script which creates a comma delimited file with the maximum usage record for each share.  It does not tell uswho has accessed each share, but it gives us a starting point to find out which shares need to be kept, or which users we need to educate not to use the shares when we migrate.

The script below accomplishes the task.  Leave it running for a few days then view the CSV file in Excell...


' Name:       sharemon.VBS

' Purpose:    To monitor share path usage on a file server


'Written by Leon Funnell

'email me at leon_funnell(At)hotmail(d0t)com





' check command line

GetArgs strComputername,strOutputFile,CorrectSyntax

If CorrectSyntax Then

       Set fso = CreateObject("Scripting.FileSystemObject")

       wscript.echo "Monitoring Share usage on " & strComputername & " To file " & strOutputFile

       wscript.echo "Press CTRL-C To Stop..."

       wscript.echo ""

       Set fs = GetObject("WinNT://" & strComputername & "/LanmanServer")

       Dim ShareList(500,3)

       Sharenum = 1

' Populate ShareList with name, path, and CurrentUserCount of each share

       For Each share In fs

              ShareList(sharenum,1) =

              ShareList(sharenum,2) = share.path

              ShareList(sharenum,3) = share.CurrentUserCount

              Sharenum = Sharenum + 1



writeArray ShareList, strOutputFile, sharenum

' Now monitor the shares on the server to watch for any upward movement on the CurrentUserCount for each share


       Sharenum = 1

       For Each share In fs

              If ShareList(sharenum,3) < share.CurrentUserCount Then


              End If

              Sharenum = Sharenum + 1


       writeArray ShareList, strOutputFile, sharenum

       wscript.echo "."

       Wscript.Sleep 5000





End If


Sub GetArgs(strComputername,strOutputFile,CorrectSyntax)

       Set Args = WScript.Arguments

       If args.count = 2 Then

              CorrectSyntax = True

              strComputername= args(0)

              strOutputFile= args(1)


              CorrectSyntax = False

       End If

End Sub



Sub DisplayHelp

       wscript.echo "Keeps a count of the maximum number of accesses to particular shares on a File server"

       wscript.echo "adn logs it to a file"

       wscript.echo "cscript sharemon.VBS /? or /Help ----------------------------------- Displays this help screen"

       wscript.echo "cscript sharemon.VBS Servername"

       wscript.echo ""

End Sub


Sub writeArray(arr,writeFile,iLines)

       Set file = fso.openTextFile(writeFile, 2, True)

       For i = 1 To iLines

              file.writeLine arr(i,1) & "," & arr(i,2) & "," & arr(i,3)



       Set file=Nothing

end sub

See Also

The Author — Leon Funnell

Systems Engineer/Architect for 350+ user base for a Global Insurance Underwriter

Featured Links