Потребовалась мне тут примитивная следилка за размером папки, которая бы показывала динамику увеличения или уменьшения оного. Речь идёт исключительно о размере каталога в мегабайтах. Не о количестве файлов, не о процессах, копошащихся в директории, а только о размере.
Наколдовав пару функций, я сляпал вот такой скрипт:
[System.Console]::Title = "Размер директории в реальном времени"
# Вывод размера с меткой времени #
function GetPathSizeWithDate
{
Param([Parameter(Mandatory=$true)]$PathToDirectory)
$date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$size = "{0:n2}" -f ((Get-ChildItem -path $PathToDirectory -recurse | Measure-Object -property length -sum).sum/1mb)
return "$date - $size МБ"
}
# Вывод размера без метки времени #
function GetPathSize
{
Param([Parameter(Mandatory=$true)]$PathToDirectory)
$date = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$size = (Get-ChildItem -path $PathToDirectory -recurse | Measure-Object -property length -sum).sum/1mb
return $size
}
$dir = Read-Host "Укажите путь к директории"
Clear
Write-Host "Начат мониторинг директории $dir..."
Write-Host (GetPathSizeWithDate -PathToDirectory $dir)
Write-Host
while($true)
{
$pre = GetPathSize -PathToDirectory $dir
Sleep(5)
$now = GetPathSize -PathToDirectory $dir
if ($pre -lt $now)
{ Write-Host (GetPathSizeWithDate -PathToDirectory $dir) "- Увеличение размера директории!" -ForegroundColor Red }
if ($pre -gt $now)
{ Write-Host (GetPathSizeWithDate -PathToDirectory $dir) "- Уменьшение размера директории!" -ForegroundColor Green }
}
Скрипт спрашивает путь к папке, получает её текущий размер, ждёт пять секунд и снова получает размер. Если зафиксирован рост — появляется сообщение, помеченное красным. Если скрипт засёк уменьшение размера папки — сообщение будет зелёным. Фиксировать совсем малую динамику в папках никакого смысла нет — скрипт писался для мониторинга прироста/уменьшения начиная с 1 мегабайта.