Open-Source, Platform independent module that consumes data points as input and plots them on a 2D graph [Scatter / Bar / Line] on the PowerShell Console/Terminal
Switch branches/tags
Nothing to show
Clone or download
Prateek Kumar SINGH
Latest commit 95f26a3 Nov 28, 2018

Powershell Console/Terminal Graph

Consumes data points as input and plots them on a 2D graph in the Powershell console

Type of Graphs Available -

  1. Scatter

  2. Bar

  3. Line


PowerShell v5 and Later

You can install the Graphical module directly from the PowerShell Gallery

  • [Recommended] Install to your personal PowerShell Modules folder
    Install-Module Graphical -scope CurrentUser
  • [Requires Elevation] Install for Everyone (computer PowerShell Modules folder)
    Install-Module Graphical

PowerShell v4 and Earlier

To install to your personal modules folder run:

iex (new-object System.Net.WebClient).DownloadString('')


  • Color-coded output depending upon the Value of data point
  • Colors codes can be customized by passing a color-map hash table
  • Custom X an Y-Axis labels
  • Graph in console is independent and fully customizable, not like Task Manager (Performance Tab)
  • Could be incorporated in Powershell scripts
  • Can consume data points generated during script run or Pre stored data like in a file or database.
  • Independent of PowerShell version, and Works on PowerShell Core (Windows\Linux)

Use Cases

  1. The function Show-Graph takes data points as input and plot them on a 2D graph

    You can also customize the labels on X and Y-Axis and provide a graph title

    The function Show-Graph can consume data points, generated during script execution or from a file or database like in the above example.

  2. Plotting Audio Peak Levels in your PowerShell Console (Don't forget to play some audio! :P)

    Install-Module AudioDeviceCmdlets, Graphical
    Import-Module AudioDeviceCmdlets, Graphical -Verbose
    $Device = Get-AudioDevice -Playback
    [int[]]$datapoints =@(0)*50
    do {
        $PeakValue = $Device.Device.AudioMeterInformation.MasterPeakValue*100
        $datapoints += [int]$PeakValue
        $datapoints = $datapoints | Select-Object -last 50
        Show-Graph -datapoints $datapoints -GraphTitle AudioLevels
        Show-Graph -datapoints $datapoints -GraphTitle AudioLevels -Type Line
        Show-Graph -datapoints $datapoints -GraphTitle AudioLevels -Type Scatter
        Start-Sleep -Milliseconds 1000
    } while ($true)