Script is modified by me as per my requirement. It is parameter based script. Example is given below.
cscript file.vbs "C:\Program Files" 1GB
Above execution will search file larger than 1 GB in Program files along with owner.
--------------------------------
Path = WScript.Arguments.Item(0)
Data1 = WScript.Arguments.Item(1)
Format = UCase(Right(Data1,2))
Data = Left(Data1,Len(Data1)-2)
Set objWMIService = GetObject("winmgmts:")
If Format <> "GB" And Format <> "MB" Then
MsgBox "Data Format Error!!! Please correct"
WScript.Quit
End If
Dim fso
Dim ObjOutFile
'Creating File System Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Create an output file
Set ObjOutFile = fso.CreateTextFile("c:\Output.csv")
'Writing CSV headers
If Format = "GB" Then
ObjOutFile.WriteLine("Type,File Name,File Path,Size(GB), Owner")
Else
ObjOutFile.WriteLine("Type,File Name,File Path,Size(MB), Owner")
End If
'Call the GetFile function to get all files
GetFiles(Path)
'Close the output file ObjOutFile.Close
WScript.Echo("Completed")
Function GetFiles(FolderName)
On Error Resume Next
Dim ObjFolder
Dim ObjSubFolders
Dim ObjSubFolder
Dim ObjFiles
Dim ObjFile
Set ObjFolder = fso.GetFolder(FolderName)
Set ObjFiles = ObjFolder.Files
'Write all files to output files
For Each ObjFile In ObjFiles
If Format = "GB" Then
Size=Round(((ObjFile.Size)/(1024*1024*1024)),2)
End If
If Format = "MB" Then
Size=Round(((ObjFile.Size)/(1024*1024)),2)
End If
If Size > Int(data) Then
strFileName = ObjFolder & "\" & ObjFile.Name
WScript.Echo strFileName
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
WScript.Echo objSD.Owner.Name
If intRetVal = 0 Then
ObjOutFile.WriteLine(ObjFile.Type & "," & ObjFile.Name & "," & ObjFile.Path & "," & Size & "," & objSD.Owner.Domain & "\" & objSD.Owner.Name )
Else
ObjOutFile.WriteLine(ObjFile.Type & "," & ObjFile.Name & "," & ObjFile.Path & "," & Size & ", Unable to find")
End If
End If
Next
'Getting all subfolders
Set ObjSubFolders = ObjFolder.SubFolders
For Each ObjFolder In ObjSubFolders
GetFiles(ObjFolder.Path)
Next
End Function
cscript file.vbs "C:\Program Files" 1GB
Above execution will search file larger than 1 GB in Program files along with owner.
--------------------------------
Path = WScript.Arguments.Item(0)
Data1 = WScript.Arguments.Item(1)
Format = UCase(Right(Data1,2))
Data = Left(Data1,Len(Data1)-2)
Set objWMIService = GetObject("winmgmts:")
If Format <> "GB" And Format <> "MB" Then
MsgBox "Data Format Error!!! Please correct"
WScript.Quit
End If
Dim fso
Dim ObjOutFile
'Creating File System Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Create an output file
Set ObjOutFile = fso.CreateTextFile("c:\Output.csv")
'Writing CSV headers
If Format = "GB" Then
ObjOutFile.WriteLine("Type,File Name,File Path,Size(GB), Owner")
Else
ObjOutFile.WriteLine("Type,File Name,File Path,Size(MB), Owner")
End If
'Call the GetFile function to get all files
GetFiles(Path)
'Close the output file ObjOutFile.Close
WScript.Echo("Completed")
Function GetFiles(FolderName)
On Error Resume Next
Dim ObjFolder
Dim ObjSubFolders
Dim ObjSubFolder
Dim ObjFiles
Dim ObjFile
Set ObjFolder = fso.GetFolder(FolderName)
Set ObjFiles = ObjFolder.Files
'Write all files to output files
For Each ObjFile In ObjFiles
If Format = "GB" Then
Size=Round(((ObjFile.Size)/(1024*1024*1024)),2)
End If
If Format = "MB" Then
Size=Round(((ObjFile.Size)/(1024*1024)),2)
End If
If Size > Int(data) Then
strFileName = ObjFolder & "\" & ObjFile.Name
WScript.Echo strFileName
Set objFileSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
WScript.Echo objSD.Owner.Name
If intRetVal = 0 Then
ObjOutFile.WriteLine(ObjFile.Type & "," & ObjFile.Name & "," & ObjFile.Path & "," & Size & "," & objSD.Owner.Domain & "\" & objSD.Owner.Name )
Else
ObjOutFile.WriteLine(ObjFile.Type & "," & ObjFile.Name & "," & ObjFile.Path & "," & Size & ", Unable to find")
End If
End If
Next
'Getting all subfolders
Set ObjSubFolders = ObjFolder.SubFolders
For Each ObjFolder In ObjSubFolders
GetFiles(ObjFolder.Path)
Next
End Function
No comments:
Post a Comment