jobs/GetStats.ps1
#Set Local Directory Set-Location $PSScriptRoot # Update Uptime Data If(Test-Path "..\webroot\http\data\uptime.json") { # Read JSON From File $JSONArray += $(Get-Content "..\webroot\http\data\uptime.json" | ConvertFrom-JSON) # Get A Count And Only Keep The Last 24 - Keeps a 24 Hour By Hour Record $JSONArray = $JSONArray | Select -Last 23 # Create New Object From Current Stats $NewStat = New-Object -Type PSObject -Property @{ Date = $(Get-Date -F 'MMM-dd-yyyy HH:mm'); CPU = $((Get-WmiObject win32_processor | Measure-Object -property LoadPercentage -Average | Select Average).Average); RAM = $([math]::Round(100 - ($(Get-Ciminstance Win32_OperatingSystem).FreePhysicalMemory / $(Get-Ciminstance Win32_OperatingSystem).TotalVisibleMemorySize)*100,2)) } #Log The New Data Write-Host "Added New Uptime Data" Write-Host $NewStat #Add New Stats $JSONArray += $NewStat # Write Stats To File $JSON | ConvertTo-JSON | Out-File "..\webroot\http\data\uptime.json" #Write-Log Add-Content "..\webroot\logs\job-uptime.txt" "Added: $NewStat - $(Get-Date)" } else { # Create New Object From Current Stats $NewStat = New-Object -Type PSObject -Property @{ Date = $(Get-Date -F 'MMM-dd-yyyy HH:mm') CPU = $((Get-WmiObject win32_processor | Measure-Object -property LoadPercentage -Average | Select Average).Average) RAM = $([math]::Round(100 - ($(Get-Ciminstance Win32_OperatingSystem).FreePhysicalMemory / $(Get-Ciminstance Win32_OperatingSystem).TotalVisibleMemorySize)*100,2)) } # Write To File $NewStat | ConvertTo-JSON | Out-File "..\webroot\http\data\uptime.json" #Write-Log Add-Content "..\webroot\logs\job-uptime.txt" "Added: $NewStat - $(Get-Date) (Stats File Was Missing, Created New One)" } |