Возможно, вы захотите взглянуть на PolyMon - решение для мониторинга систем с открытым исходным кодом. Он позволяет вам создавать собственные мониторы на любом языке .NET и создавать собственные мониторы PowerShell.
Он хранит данные на сервере SQL Server и предоставляет графики. Для вашей цели вам просто понадобится скрипт, который получит размер каталога и количество файлов.
Что-то вроде:
$size = 0
$count = 0
$path = '\\unc\path\to\directory\to\monitor'
get-childitem -path $path -recurse | Where-Object {$_ -is [System.IO.FileInfo]} | ForEach-Object {$size += $_.length; $count += 1}
В ответ на комментарий Скотта:
Конечно. Вы могли бы обернуть это в цикл времени
$ESCkey = 27
Write-Host "Press the ESC key to stop sniffing" -foregroundcolor "CYAN"
$Running=$true
While ($Running)
{
if ($host.ui.RawUi.KeyAvailable) {
$key = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyUp,IncludeKeyDown")
if ($key.VirtualKeyCode -eq $ESCkey) {
$Running=$False
}
#rest of function here
}
Я бы не стал этого делать для монитора PowerShell, который вы можете запланировать для периодического запуска, но для сценария, запускаемого в фоновом режиме, вышеприведенное будет работать. Вы могли бы даже добавить некоторый код доступа к базе данных, чтобы записать результаты в базу данных, или записать его в файл ... что бы вы ни хотели.