Share via


PowerShell: Resources monitoring


Sample

Please check below a sample of Resource monitoring PowerShell script.

Realtime CPU 

Realtime CPU control and measurement: Define win32_processor data with WMI object help and parameters.

 $ComputerCPU = (Get-WmiObject  -Class win32_processor -ErrorAction Stop | Measure-Object -Property LoadPercentage -Average |  Select-Object Average).Average 

Realtime ram

Realtime ram control: Define a win32_operationgsystem data with WMI object help and parameters. Total visible memory size and free physical memory.

  $ComputerMemory   = Get-WmiObject -Class win32_operatingsystem -ErrorAction Stop  $UsedMemory   = $ComputerMemory.TotalVisibleMemorySize - $ComputerMemory.FreePhysicalMemory  $Memory   = (($UsedMemory/ $ComputerMemory.TotalVisibleMemorySize)*100)  $RoundMemory   = [math]::Round($Memory, 2)

Realtime disk

Realtime disk control: Define a win32_logicaldisk data with WMI object help and parameters.

    #$disk = Get-PSDrive C | Select-Object Used,Free              $TotalDisk = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.Size / 1GB)}       $FreeSpace = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.freespace / 1GB)}   

Date format

Preparing date formats for correct output

  $Date   = Get-Date  -DisplayHint Date  -Format MM/dd/yyyy           $Time =  Get-Date -DisplayHint  Time -Format  HH:mm:ss           Write-Host "Date: " $Date " Time: " $Time " CPU: " $ComputerCPU " Memory: " $RoundMemory " Free Space: "  $Freespace " Total Size : "  $TotalDisk   

All code

Run as administrator, PowerShell.  Copy and Paste code in a PowerShell console.

  while  ($true)   {       $ComputerCPU = (Get-WmiObject  -Class win32_processor -ErrorAction Stop | Measure-Object -Property LoadPercentage -Average |  Select-Object Average).Average           $ComputerMemory  = Get-WmiObject   -Class win32_operatingsystem  -ErrorAction Stop       $UsedMemory = $ComputerMemory.TotalVisibleMemorySize - $ComputerMemory.FreePhysicalMemory       $Memory = (($UsedMemory/ $ComputerMemory.TotalVisibleMemorySize)*100)       $RoundMemory = [math]::Round($Memory, 2)               #$disk = Get-PSDrive C | Select-Object Used,Free                $TotalDisk = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.Size / 1GB)}       $FreeSpace = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.freespace / 1GB)}           $Date =  Get-Date -DisplayHint  Date -Format  MM/dd/yyyy           $Time =  Get-Date -DisplayHint  Time -Format  HH:mm:ss           Write-Host "Date: " $Date " Time: " $Time " CPU: " $ComputerCPU " Memory: " $RoundMemory " Free Space: " $Freespace " Total Size : " $TotalDisk               sleep 2   } 
while($true)
{
 
    $ComputerCPU = (Get-WmiObject  -Class win32_processor -ErrorAction Stop | Measure-Object -Property LoadPercentage -Average | Select-Object Average).Average
 
    $ComputerMemory = Get-WmiObject  -Class win32_operatingsystem -ErrorAction Stop
    $UsedMemory = $ComputerMemory.TotalVisibleMemorySize - $ComputerMemory.FreePhysicalMemory
    $Memory = (($UsedMemory/ $ComputerMemory.TotalVisibleMemorySize)*100)
    $RoundMemory = [math]::Round($Memory, 2)
     
    #$disk = Get-PSDrive C | Select-Object Used,Free 
     
    $TotalDisk = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.Size / 1GB)}
    $FreeSpace = Get-WMIObject Win32_LogicalDisk -Filter "DeviceID='C:'"  | ForEach-Object {[math]::truncate($_.freespace / 1GB)}
 
    $Date = Get-Date -DisplayHint Date -Format MM/dd/yyyy
 
    $Time = Get-Date -DisplayHint Time -Format HH:mm:ss
 
    Write-Host "Date: " $Date " Time: " $Time " CPU: " $ComputerCPU " Memory: " $RoundMemory " Free Space: " $Freespace " Total Size : " $TotalDisk
     
    sleep 2
}

Kaynak: microsoft.com


View