Scripts/Get-NetTrafficLights.ps1
<# .SYNOPSIS Pings a list of nodes and displays the results using 'traffic light' colors. .EXAMPLE ./Get-NetTrafficLights.ps1 -File C:\Users\Victor\Desktop\routers.txt .INPUTS A text-file with hostnames and/or IP addresses. .OUTPUTS Prints text to the console (host). .LINK https://www.yoursecurity.tech .NOTES File name: Get-NetTrafficLights.ps1 Version: 2.0 Author: Victor Fernandez III Creation Date: Friday, December 13th, 2019 Purpose: Initial script development #> Param( [ValidateScript({ Test-Path $_ })] [string]$File ) $Nodes = Get-Content $File $Nodes | Add-Member -MemberType NoteProperty -Name 'Status' -Value 'Null' $Nodes | Add-Member -MemberType NoteProperty -Name 'FailedChecks' -Value 'Null' While ($true) { $Nodes | ForEach-Object { if ($_.FailedChecks -eq '1') { $_.FailedChecks = '2' $_.Status = ' Offline ' } elseif (Test-Connection $_ -Count 1 -Quiet) { $_.Status = ' Online ' } else { $_.FailedChecks = '1' $_.Status = ' Standby ' } } Clear-Host Write-Host '----------TRAFFIC LIGHTS----------' Write-Host ' '(Get-Date) Write-Host '----------------------------------' $Nodes | ForEach-Object { Write-Host '[' -NoNewline if ($_.Status -eq ' Online ') { Write-Host $_.Status -NoNewline -BackgroundColor Green -ForegroundColor Black } if ($_.Status -eq ' Offline ') { Write-Host $_.Status -NoNewline -BackgroundColor Red -ForegroundColor Black } if ($_.Status -eq ' Standby ') { Write-Host $_.Status -NoNewline -BackgroundColor Yellow -ForegroundColor Black } Write-Host ']' $_ } Start-Sleep -Seconds ($Nodes | Measure-Object).Count } |