# Analizator Dysku # param ( [ValidatePattern("^[a-zA-Z]:\\$")] [Parameter(Mandatory=$true, HelpMessage="Podaj literę dysku, np.: D:\")] [string]$Litera_Dysku ) if (-not(Test-Path $Litera_Dysku)) { Write-Error "Dysk $Litera_Dysku nie istnieje" } $startdate = Get-Date # Aktualny rozmiar bloku $Block_Size = Get-CimInstance -ClassName Win32_Volume -Filter "DriveType = 3" | Where-Object name -eq $($Litera_Dysku) | Select-Object BlockSize -ExpandProperty BlockSize [int64]$Licznik_Folderow = 0 [int64]$Licznik_Plikow = 0 [int64]$Wielkosc_Plikow_suma = 0 [int64]$wielkosc_Plikow_suma_KB = 0 [int64]$wielkosc_Plikow_suma_MB = 0 [int64]$wielkosc_Plikow_suma_GB = 0 $Wielkosc_Bloku = [System.Collections.Generic.List[pscustomobject]]::new() $Wielkosc_Bloku_lista = [pscustomobject]@{ "0,5 KB" = 0 "1 KB" = 0 "2 KB" = 0 "4 KB" = 0 "8 KB" = 0 "16 KB" = 0 "32 KB" = 0 "64 KB" = 0 "128 KB" = 0 "256 KB" = 0 "512 KB" = 0 "1024 KB" = 0 "2048 KB" = 0 "4096 KB" = 0 "8192 KB" = 0 "16384 KB" = 0 "32768 KB" = 0 "65536 KB" = 0 "131072 KB" = 0 "262144 KB" = 0 "524288 KB" = 0 "1048576 KB" = 0 "1 GB+" = 0 } $Wielkosc_Bloku.Add($Wielkosc_Bloku_lista) $Rozszerzenia = [System.Collections.Generic.List[pscustomobject]]::new() $rozszerzenia_lista = [PSCustomObject]@{ Rozszerzenie = "" Ilosc = 0 } $Rozszerzenia.Add($rozszerzenia_lista) $glebokosc_start = $true # Rozpoczęcie iterowania po dysku w poszukiwaniu wszystkich plików i folderów Get-ChildItem -LiteralPath $Litera_Dysku -Recurse -Force | ForEach-Object { # Jeżeli znaleziono folder if ($_.PSIsContainer -eq $true) { # Zwiększenie licznika folderów $Licznik_Folderow++ # Zdefiniowanie głębokości if ($glebokosc_start -eq $true) { $Glebokosc_folderow = (($_.FullName.Split("\").count) -1) $glebokosc_start = $false } else { # Przypisanie nowej większej głębokości if ($Glebokosc_folderow -lt (($_.FullName.Split("\").count) -1)) { $Glebokosc_folderow = (($_.FullName.Split("\").count) -1) } } # Jeżeli nie jest to folder } else { # Zwiększenie licznika plików $Licznik_Plikow++ # Zsumowanie rozmiarów plików (2 miejsca po przecinku) [int64]$Wielkosc_Plikow_suma = [Math]::Round(($Wielkosc_Plikow_suma + [int64]$_.Length), 2) [int64]$wielkosc_Plikow_suma_KB = [Math]::Round(($Wielkosc_Plikow_suma / 1KB), 2) [int64]$wielkosc_Plikow_suma_MB = [Math]::Round(($wielkosc_Plikow_suma / 1MB), 2) [int64]$wielkosc_Plikow_suma_GB = [Math]::Round(($wielkosc_Plikow_suma / 1GB), 2) # Przypisanie pliku do grupy na podstawie rozmiaru bloku $length = $_.Length switch ($length) { { ($length -le 512) } { $Wielkosc_Bloku[0]."0,5 KB" = $Wielkosc_Bloku[0]."0,5 KB" + 1 } { ($length -gt 512) -and ($length -le 1024) } { $Wielkosc_Bloku[0]."1 KB" = $Wielkosc_Bloku[0]."1 KB" + 1 } { ($length -gt 1024) -and ($length -le 2048) } { $Wielkosc_Bloku[0]."2 KB" = $Wielkosc_Bloku[0]."2 KB" + 1 } { ($length -gt 2048) -and ($length -le 4096) } { $Wielkosc_Bloku[0]."4 KB" = $Wielkosc_Bloku[0]."4 KB" + 1 } { ($length -gt 4096) -and ($length -le 8192) } { $Wielkosc_Bloku[0]."8 KB" = $Wielkosc_Bloku[0]."8 KB" + 1 } { ($length -gt 8192) -and ($length -le 16384) } { $Wielkosc_Bloku[0]."16 KB" = $Wielkosc_Bloku[0]."16 KB" + 1 } { ($length -gt 16384) -and ($length -le 32768) } { $Wielkosc_Bloku[0]."32 KB" = $Wielkosc_Bloku[0]."32 KB" + 1 } { ($length -gt 32768) -and ($length -le 63488) } { $Wielkosc_Bloku[0]."64 KB" = $Wielkosc_Bloku[0]."64 KB" + 1 } { ($length -gt 63488) -and ($length -le 131072) } { $Wielkosc_Bloku[0]."128 KB" = $Wielkosc_Bloku[0]."128 KB" + 1 } { ($length -gt 131072) -and ($length -le 262144) } { $Wielkosc_Bloku[0]."256 KB" = $Wielkosc_Bloku[0]."256 KB" + 1 } { ($length -gt 262144) -and ($length -le 524288) } { $Wielkosc_Bloku[0]."512 KB" = $Wielkosc_Bloku[0]."512 KB" + 1 } { ($length -gt 524288) -and ($length -le 1048576) } { $Wielkosc_Bloku[0]."1024 KB" = $Wielkosc_Bloku[0]."1024 KB" + 1 } { ($length -gt 1048576) -and ($length -le 2097152) } { $Wielkosc_Bloku[0]."2048 KB" = $Wielkosc_Bloku[0]."2048 KB" + 1 } { ($length -gt 2097152) -and ($length -le 4194304) } { $Wielkosc_Bloku[0]."4096 KB" = $Wielkosc_Bloku[0]."4096 KB" + 1 } { ($length -gt 4194304) -and ($length -le 8388608) } { $Wielkosc_Bloku[0]."8192 KB" = $Wielkosc_Bloku[0]."8192 KB" + 1 } { ($length -gt 8388608) -and ($length -le 16777216) } { $Wielkosc_Bloku[0]."16384 KB" = $Wielkosc_Bloku[0]."16384 KB" + 1 } { ($length -gt 16777216) -and ($length -le 33554432) } { $Wielkosc_Bloku[0]."32768 KB" = $Wielkosc_Bloku[0]."32768 KB" + 1 } { ($length -gt 33554432) -and ($length -le 67108864) } { $Wielkosc_Bloku[0]."65536 KB" = $Wielkosc_Bloku[0]."65536 KB" + 1 } { ($length -gt 67108864) -and ($length -le 134217728) } { $Wielkosc_Bloku[0]."131072 KB" = $Wielkosc_Bloku[0]."131072 KB" + 1 } { ($length -gt 134217728) -and ($length -le 268435456) } { $Wielkosc_Bloku[0]."262144 KB" = $Wielkosc_Bloku[0]."262144 KB" + 1 } { ($length -gt 268435456) -and ($length -le 536870912) } { $Wielkosc_Bloku[0]."524288 KB" = $Wielkosc_Bloku[0]."524288 KB" + 1 } { ($length -gt 536870912) -and ($length -le 1073741824) } { $Wielkosc_Bloku[0]."1048576 KB" = $Wielkosc_Bloku[0]."1048576 KB" + 1 } default { $Wielkosc_Bloku[0]."1 GB+" = $Wielkosc_Bloku[0]."1 GB+" + 1 } } if ($Rozszerzenia.Rozszerzenie -contains $_.Extension) { $ext = $_.Extension $extension = $Rozszerzenia | Where-Object { $_.Rozszerzenie -eq $ext } if ($extension) { $index = $Rozszerzenia.IndexOf($extension) $Rozszerzenia[$index].Ilosc = $Rozszerzenia[$index].Ilosc + 1 } } else { $rozszerzenia_lista = [PSCustomObject]@{ Rozszerzenie = $_.Extension Ilosc = 1 } $Rozszerzenia.Add($rozszerzenia_lista) } } } $enddate = Get-Date Clear-Host "" Start-Sleep 1 Write-Host "Skrypt wystartował o: " -NoNewline Write-Host "$startdate" -ForegroundColor Green Write-Host "Skrypt zatrzymał się o: " -NoNewline Write-Host "$enddate" -ForegroundColor Green Write-Host "Skrypt trwał: " -NoNewline Write-Host "$($enddate - $startdate)" -ForegroundColor Green "" Start-Sleep 1 Write-Host "Przeskanowano " -NoNewline Write-Host "$Licznik_Plikow" -NoNewline -ForegroundColor Green Write-Host " plików i " -NoNewline Write-Host "$Licznik_Folderow" -NoNewline -ForegroundColor Green Write-Host " folderów gdzie najgłębsze zagnieżdżenie wynosi " -NoNewline Write-Host "$Glebokosc_folderow" -ForegroundColor Green -NoNewline Write-host "." Start-Sleep 1 Write-Host "Znaleziono " -NoNewline Write-host "$($Rozszerzenia.Count)" -ForegroundColor Green -NoNewline Write-Host " unikalnych rodzajów plików które dzielą się następująco:" $Rozszerzenia = $rozszerzenia | Sort-Object Ilosc for ($i = 0; $i -lt $Rozszerzenia.Count; $i++) { Write-Host "Znaleziono " -NoNewline Write-Host "$($Rozszerzenia[$i].Ilosc)" -ForegroundColor Green -NoNewline Write-Host " plików o rozszerzeniu " -NoNewline Write-Host "$($Rozszerzenia[$i].Rozszerzenie)" -ForegroundColor Green } "" Start-Sleep 1 Write-Host "Aktualny rozmiar bloku to: " -NoNewline Write-Host $Block_Size -ForegroundColor Green Write-Host "Gdzie suma rozmiarów plików w B to: " -NoNewline Write-host "$($Wielkosc_Plikow_suma)" -ForegroundColor Green Write-Host "Gdzie średni rozmiar pliku w B to: " -NoNewline Write-host "$($Wielkosc_Plikow_suma / $Licznik_Plikow)" -ForegroundColor Green Write-Host "Gdzie suma rozmiarów plików w KB to: " -NoNewline Write-host "$($Wielkosc_Plikow_suma_KB)" -ForegroundColor Green Write-Host "Gdzie średni rozmiar pliku w KB to: " -NoNewline Write-host "$($wielkosc_Plikow_suma_KB / $Licznik_Plikow)" -ForegroundColor Green Write-Host "Gdzie suma rozmiarów plików w MB to: " -NoNewline Write-host "$($Wielkosc_Plikow_suma_MB)" -ForegroundColor Green Write-Host "Gdzie średni rozmiar pliku w MB to: " -NoNewline Write-host "$($wielkosc_Plikow_suma_MB / $Licznik_Plikow)" -ForegroundColor Green Write-Host "Gdzie suma rozmiarów plików w GB to: " -NoNewline Write-host "$($Wielkosc_Plikow_suma_GB)" -ForegroundColor Green Write-Host "Gdzie średni rozmiar pliku w GB to: " -NoNewline Write-host "$($wielkosc_Plikow_suma_GB / $Licznik_Plikow)" -ForegroundColor Green Write-Host "Znalezione pliki można przypisać do następujących bloków: " $wielkosc_bloku Start-Sleep 1 $wielkosc_bloku | Export-Csv -Path "$($env:userprofile)\wielkosc_bloku.csv" -NoTypeInformation -Force Write-Host "Plik wielkosc_bloku.csv zapisano w w lokalizacji $($env:userprofile)"