Files
clice/scripts/monitor-resources.ps1

40 lines
1.3 KiB
PowerShell

param(
[string]$LogFile = "ci-resource-usage.log",
[int]$IntervalSeconds = 30
)
function Write-Log {
param(
[Parameter(ValueFromPipeline = $true)]
[string]$Message
)
process {
Add-Content -Path $LogFile -Value $Message
}
}
"Resource monitor started for Windows, interval ${IntervalSeconds}s, writing to ${LogFile}" | Write-Log
while ($true) {
$timestamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
"[$timestamp] ===== Disk =====" | Write-Log
try {
$disk = Get-Volume | Select-Object DriveLetter, FileSystem, @{Name="FreeGB";Expression={[math]::Round($_.SizeRemaining/1GB,2)}}, @{Name="SizeGB";Expression={[math]::Round($_.Size/1GB,2)}} | Format-Table -AutoSize | Out-String
$disk | Write-Log
} catch {
"Disk query failed: $($_.Exception.Message)" | Write-Log
}
"[$timestamp] ===== Memory =====" | Write-Log
try {
$mem = Get-CimInstance Win32_OperatingSystem | Select-Object @{Name="TotalGB";Expression={[math]::Round($_.TotalVisibleMemorySize/1MB,2)}}, @{Name="FreeGB";Expression={[math]::Round($_.FreePhysicalMemory/1MB,2)}} | Format-Table -AutoSize | Out-String
$mem | Write-Log
} catch {
"Memory query failed: $($_.Exception.Message)" | Write-Log
}
"" | Write-Log
Start-Sleep -Seconds $IntervalSeconds
}