कोटा में फाइलें निर्धारित की जाती हैं कि फाइल किसके पास है। कोटा उपयोग उपयोगकर्ता "डोमेन \ उपयोगकर्ता नाम" के स्वामित्व वाली सभी फ़ाइलों का एक योग है। इसे ध्यान में रखते हुए, यह देखने का सबसे अच्छा तरीका है कि कौन अंतरिक्ष में दुर्व्यवहार कर रहा है, जिनके पास उनके कोटा आदि में क्या है, सभी फाइलों को उनके आकार, स्वामी और अंतिम उपयोग की तारीख के साथ गणना करना है।
इस जानकारी को प्राप्त करने और CSV को निर्यात करके, आप तब एक्सेल में फ़ाइलों को समूह में देख सकते हैं कि व्हाट्स बहुत बड़ा है, व्हाट्स भी अप्रयुक्त है और जिनके पास एक मिलियन से अधिक फाइलें होनी चाहिए।
जब मुझे एक समान कार्य पूरा करना था, तो मैंने वीबीएस के निम्नलिखित टुकड़े का उपयोग किया। स्क्रिप्ट का यह टुकड़ा आपको आधार फ़ोल्डर के लिए संकेत देगा और इसके तहत सब कुछ फिर से लाएगा। पूरा होने पर, एक CSV उसी फ़ोल्डर में बनाई जाती है जिसमें स्क्रिप्ट स्वयं में होती है:
on error resume next
' Flags for browse dialog
Const BIF_returnonlyfsdirs = &H0001
Const BIF_dontgobelowdomain = &H0002
Const BIF_statustext = &H0004
Const BIF_returnfsancestors = &H0008
Const BIF_editbox = &H0010
Const BIF_validate = &H0020
Const BIF_browseforcomputer = &H1000
Const BIF_browseforprinter = &H2000
Const BIF_browseincludefiles = &H4000
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDlg = WScript.CreateObject("Shell.Application")
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
'Get the Source Folder
' Use the BrowseForFolder method.
Set objStartFolder = objDlg.BrowseForFolder (&H0, _
"Please select the FOLDER to report on.", BIF_editbox + BIF_returnonlyfsdirs)
' Here we use TypeName to detect the result.
If InStr(1, TypeName(objStartFolder), "Folder") > 0 Then
sourceFolder = objStartFolder.ParentFolder.ParseName(objStartFolder.Title).Path
Else
MsgBox "An error has occured: Unable to read destination folder"
End if
'Ask to open the report now or just close
strMbox = MsgBox("Are youn sure you want to run the report of: " & sourceFolder & chr(13) & chr(10) & chr(13) & chr(10) & "If you continue this may take an exteneded period of time, a message will be displayed when complete, continue?",4,"Are you sure?")
if strMbox = 6 Then
currentScriptPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
reportFile = currentScriptPath & "File_Properties_Report.csv"
'OpenTextFile(destination, forwriting, createnew, open as Unicode)
Set objReportFile = objFSO.OpenTextFile(reportFile, ForWriting, True, True)
'Add headers
objReportFile.Write("Path, Size(kb), Type, Created, Last Accessed, Last Modified, Owner" & chr(13) & chr(10))
'Run though file report process
ReportFiles sourceFolder
'Close the file
objReportFile.Close
'Compete
strMbox = MsgBox("Report Complete")
End if
Function ReportFiles(currentFolder)
Dim objFolder, objFile, fileCollection, folderCollection, subFolder
Set objFolder = objFSO.GetFolder(currentFolder)
Set fileCollection = objFolder.Files
For Each objFile In fileCollection
'Get File Properties
strFilePath = objFile.Path
strFileName = objFile.Name
strFileSize = objFile.Size / 1024
strFileType = objFile.Type
strFileDateCreated = objFile.DateCreated
strFileDateLastAccessed = objFile.DateLastAccessed
strFileDateLastModified = objFile.DateLastModified
'Get File owner
strFileOwnerDomain = ""
strFileOwner = ""
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
if strFileType <> "Shortcut" or InStr(1,strFileName, "AlbumArt",1) = 0 or InStr(1,strFileName, "£",1) Then
Set colItems = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting=""" & Replace(strFilePath, "\", "\\") & """}" & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
For Each objItem in colItems
strFileOwnerDomain = objItem.ReferencedDomainName
strFileOwner = objItem.AccountName
Next
End If
objReportFile.Write(chr(34) & strFilePath & chr(34) & ", " _
& Round(strFileSize,2) & ", " _
& chr(34) & strFileType & chr(34) & "," _
& strFileDateCreated & "," _
& strFileDateLastAccessed & "," _
& strFileDateLastModified & "," _
& chr(34) & strFileOwnerDomain & "\" & strFileOwner & chr(34) & "," _
& chr(13) & chr(10))
Next
'Loop for each sub folder
Set folderCollection = objFolder.SubFolders
For Each subFolder In folderCollection
ReportFiles subFolder.Path
Next
End Function
यदि आप अपने उपयोगकर्ताओं की मदद करना चाहते हैं, तो मैं इसे रात भर चलाऊंगा और फिर अगले दिन किसी उपयोगकर्ता से बात करके यह स्थापित करूंगा कि वे क्या कम / हटा सकते हैं।
यदि आप केवल एक विशिष्ट उपयोगकर्ता के लिए जानकारी चाहते हैं, तो आप हमेशा VBS को केवल एक मैच के समान लिख सकते हैं:
strTargetUser = "domain\person"
if strFileOwnerDomain & "\" & strFileOwner = strTargetUser then
objReportFile.Write(chr(34) & strFilePath & chr(34) & ", " _
& Round(strFileSize,2) & ", " _
& chr(34) & strFileType & chr(34) & "," _
& strFileDateCreated & "," _
& strFileDateLastAccessed & "," _
& strFileDateLastModified & "," _
& chr(34) & strFileOwnerDomain & "\" & strFileOwner & chr(34) & "," _
& chr(13) & chr(10))
end if