Ainda que existam boas ferramentas para descobrir, cito aqui (WinDirStat), Powershell pode nos ajudar.
Vamos criar uma função que receberá como parâmetros:
- O drive que desejamos verificar.
- O total de arquivos grandes que desejamos inventariar.
- O total de arquivos grandes que desejamos inventariar.
- Onde desejamos salvar Log com as informações inventariadas.
- A extensão dos arquivos que desejamos inventariar
Function Get-LargeFiles { param([String]$drive, [Int32]$totalArq, [string]$Log, [String]$Ext) ... }
Usaremos Get-ChildItem.
Get-ChildItem -path $drive -include $Ext -recurse -ErrorAction "SilentlyContinue" ` | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} ` | sort-Object -property length -Descending ` | Select-Object Name, ` @{Name="Size In MB";Expression={ "{0:N0}" -f ($_.Length / 1MB)}},` @{Name="LastWriteTime";Expression={$_.LastWriteTime}},` @{Name="Path";Expression={$_.directory}} -first $totalArq
A função poderia ser escrita assim:
Function Get-LargeFiles { param([String]$drive, [Int32]$totalArq, [string]$Log, [String]$Ext) Clear-Host Write-Host " " Write-Host "Buscando em $drive os $totalArq maiores arquivos (aguarde, pode demorar...)" "Abaixo estão os $totalArq maiores arquivos em $drive, ordenados do maior ao menor:" | out-file -width 150 $Log -Force $largeSizefiles = Get-ChildItem -path $drive -include $Ext -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length -Descending | Select-Object Name, @{Name="Size In MB";Expression={ "{0:N0}" -f ($_.Length / 1MB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $totalArq $largeSizefiles | format-list -property Name,"Size In MB",Path,LastWriteTime | out-file -width 150 $Log -append Write-Host " " Write-Host "Busca Completa!" Write-Host " " Write-Host "Pressione a tecla [ENTER] e o Log será aberto no Bloco de Notas" Read-Host c:\windows\system32\notepad.exe $Log }
E ser chamada assim.
Get-LargeFiles -drive "E:" -totalArq 11 -Log "E:\LargeFiles.txt" -Ext "*.*"
Nesse exemplo, estamos verificando os 11 maiores arquivos, de qualquer extensão, do drive E:
Referência: RobWillis.info
Nenhum comentário:
Postar um comentário