40 lines
1.3 KiB
PowerShell
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
|
|
}
|