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)"
}