1
0
mirror of https://github.com/fleschutz/PowerShell.git synced 2025-07-05 23:20:04 +02:00

Update ping-local-hosts.ps1

This commit is contained in:
Markus Fleschutz
2024-01-31 10:53:05 +01:00
parent 8fcdf14d13
commit b6759748ca

@ -5,24 +5,22 @@
This PowerShell script pings the computers in the local network and lists which one are up. This PowerShell script pings the computers in the local network and lists which one are up.
.EXAMPLE .EXAMPLE
PS> ./ping-local-hosts.ps1 PS> ./ping-local-hosts.ps1
✅ Up: Hippo Jenkins01 Jenkins02 Rocket Vega ✅ Up: hippo jenkins01 jenkins02 rocket vega
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
.NOTES .NOTES
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
$hostsArray = @('amnesiac','archlinux','berlin','boston','brother','canon','castor','cisco','echodot','epson','fedora','fireball','firewall','fritz.box','gassensor','gateway','hippo','heizung','homemanager','io','iphone','jarvis','jenkins','la','laptop','jupiter','mars','mercury','miami','mobile','ny','octopi','office','officepc','paris','pi','pixel-6a','pluto','printer','proxy','r2d2','raspberry','rocket','rome','router','server','shelly1','smartphone','smartwatch','soundbar','sunnyboy','surface','switch','tablet','tau','tolino','tv','ubuntu','vega','venus','xrx','zeus') # sorted alphabetically
[int]$pingTimeout = 600 # ms
try { try {
Write-Progress "Sending pings to the local hosts..." Write-Progress "Sending pings to the local hosts..."
[string]$hosts = "Amnesiac,ArchLinux,Berlin,Boston,Brother,Canon,Castor,Cisco,EchoDot,Epson,Fedora,Fireball,Firewall,fritz.box,GasSensor,Gateway,Hippo,HomeManager,Io,iPhone,Jarvis,Jenkins01,Jenkins02,LA,Laptop,Jupiter,Mars,Mercury,Miami,Mobile,NY,OctoPi,Paris,Pixel-6a,Pluto,Printer,Proxy,R2D2,Raspberry,Rocket,Rome,Router,Server,Shelly1,SmartPhone,SmartWatch,Soundbar,Sunnyboy,Surface,Switch,Tablet,Tolino,TV,Ubuntu,Vega,Venus,XRX,Zeus" # sorted alphabetically
$hostsArray = $hosts.Split(",")
$count = $hostsArray.Count
[int]$timeout = 600 # ms
$queue = [System.Collections.Queue]::new() $queue = [System.Collections.Queue]::new()
foreach($hostname in $hostsArray) { foreach($hostname in $hostsArray) {
$ping = [System.Net.Networkinformation.Ping]::new() $ping = [System.Net.Networkinformation.Ping]::new()
$obj = @{ Host = $hostname; Ping = $ping; Async = $ping.SendPingAsync($hostname, $timeout) } $obj = @{ Host = $hostname; Ping = $ping; Async = $ping.SendPingAsync($hostname, $pingTimeout) }
$queue.Enqueue($obj) $queue.Enqueue($obj)
} }
@ -30,7 +28,7 @@ try {
while ($queue.Count -gt 0) { while ($queue.Count -gt 0) {
$obj = $queue.Dequeue() $obj = $queue.Dequeue()
try { try {
if ($obj.Async.Wait($timeout) -eq $true) { if ($obj.Async.Wait($pingTimeout) -eq $true) {
if ($obj.Async.Result.Status -ne "TimedOut") { if ($obj.Async.Result.Status -ne "TimedOut") {
$result += "$($obj.Host) " $result += "$($obj.Host) "
} }