Скрипт по сбору статистики использования файлов на Windows

Обновлено и опубликовано Опубликовано:

Тематические термины: Windows, Powershell.

Данный скрипт позволит получить сведения о типах файлов, которые есть на сервере и некоторые по ним сведения (количество, размер, дата обращения).

Пример скрипта

  1. $FilesDir = "D:\Отделы"
  2. $FileResult = "C:\Temp\result.csv"
  3. if ($args[0]) { $FilesDir = $args[0] }
  4. $FilesArray = @{}
  5. $i = 0
  6. $Count = 0
  7.  
  8. Get-ChildItem $FilesDir -Recurse -Attributes !Directory+!System | ForEach-Object {
  9.     $fileName = $_.Name
  10.     $fileFullName = $_.VersionInfo.FileName
  11.     if ($fileName -and $fileFullName) {
  12.         $Extension = $fileFullName.split('.')[-1]
  13.         $FileInfo = (Get-Item $fileFullName)
  14.         $Length = $FileInfo.Length
  15.         $CreationTime = $FileInfo.CreationTime
  16.         $LastWriteTime = $FileInfo.LastWriteTime
  17.         $LastAccessTime = $FileInfo.LastAccessTime
  18.         
  19.         if (!$FilesArray[$Extension]) {
  20.             $FilesArray[$Extension] = @{}
  21.             $FilesArray[$Extension]['size'] = @()
  22.             $FilesArray[$Extension]['CreationTime'] = @()
  23.             $FilesArray[$Extension]['LastWriteTime'] = @()
  24.             $FilesArray[$Extension]['LastAccessTime'] = @()
  25.         }
  26.         
  27.         $FilesArray[$Extension].add($fileFullName,$fileName)
  28.         $FilesArray[$Extension]['size'] += $Length
  29.         $FilesArray[$Extension]['CreationTime'] += $CreationTime
  30.         $FilesArray[$Extension]['LastWriteTime'] += $LastWriteTime
  31.         $FilesArray[$Extension]['LastAccessTime'] += $LastAccessTime
  32.         $Count++
  33.         Write-Host "$Count ... " -NoNewLine
  34.     }
  35. }
  36.  
  37. echo "Extension`tFilesCount`tMaxSize`tMinSize`tSumSize`tMaxCreationTime`tMinCreationTime`tMaxLastWriteTime`tMinLastWriteTime`tMaxLastAccessTime`tMinLastAccessTime" > $FileResult
  38.  
  39. $FilesArray.Keys | % {
  40.     $Extension = $_
  41.     $FilesCount = $FilesArray[$_]['size'].Count
  42.     $i += $FilesCount 
  43.     $MaxSize = ($FilesArray[$_]['size'] | measure -Maximum).Maximum
  44.     $MinSize = ($FilesArray[$_]['size'] | measure -Minimum).Minimum
  45.     $SumSize = ($FilesArray[$_]['size'] | measure -Sum).Sum
  46.     $MaxCreationTime = ($FilesArray[$_]['CreationTime'] | measure -Maximum).Maximum
  47.     $MinCreationTime = ($FilesArray[$_]['CreationTime'] | measure -Minimum).Minimum
  48.     $MaxLastWriteTime = ($FilesArray[$_]['LastWriteTime'] | measure -Maximum).Maximum
  49.     $MinLastWriteTime = ($FilesArray[$_]['LastWriteTime'] | measure -Minimum).Minimum
  50.     $MaxLastAccessTime = ($FilesArray[$_]['LastAccessTime'] | measure -Maximum).Maximum
  51.     $MinLastAccessTime = ($FilesArray[$_]['LastAccessTime'] | measure -Minimum).Minimum
  52.     Write-Host "[$i/$Count]"
  53.     echo "$Extension`t$FilesCount`t$MaxSize`t$MinSize`t$SumSize`t$MaxCreationTime`t$MinCreationTime`t$MaxLastWriteTime`t$MinLastWriteTime`t$MaxLastAccessTime`t$MinLastAccessTime" >> $FileResult
  54. }
# Windows # Powershell
Дмитрий Моск — частный мастер
Был ли вам полезен этот скрипт?

Да            Нет