ไฟล์ในโควต้าจะถูกกำหนดโดยผู้ที่เป็นเจ้าของไฟล์ การใช้โควต้าคือผลรวมของไฟล์ทั้งหมดที่เป็นของผู้ใช้ "โดเมน \ ชื่อผู้ใช้" ด้วยวิธีนี้ในใจวิธีที่ดีที่สุดในการดูว่าใครละเมิดพื้นที่ใครมีอะไรบ้างในโควต้าและอื่น ๆ คือการแจกแจงไฟล์ทั้งหมดด้วยขนาดเจ้าของและวันที่ใช้ล่าสุด
ด้วยการรับข้อมูลนี้และส่งออกเป็น CSV คุณจะสามารถจัดกลุ่มไฟล์ใน excel เพื่อดูว่ามีอะไรใหญ่เกินไปอะไรที่ไม่ได้ใช้งานมากเกินไปและใครมีไฟล์มากกว่าหนึ่งล้านไฟล์
เมื่อฉันต้องทำงานที่คล้ายกันฉันใช้ VBS ต่อไปนี้ สคริปต์ส่วนนี้จะแจ้งให้คุณทราบถึงโฟลเดอร์พื้นฐานและจะชดเชยทุกสิ่งภายใต้ เมื่อเสร็จสิ้น 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