Private/Helper/Start-PSPing.ps1
<#
Copyright © 2024 Integris. For internal company use only. All rights reserved. #> FUNCTION Start-PSPing { <# .SYNOPSIS Pings a specified address and returns the results. .DESCRIPTION This function sends ICMP echo requests to a specified address and returns the results, including address, buffer size, latency, and status. .PARAMETER Address The address to ping. .PARAMETER Count The number of echo requests to send. Default is 4. .PARAMETER Delay The delay in seconds between each echo request. Default is 3 seconds. .EXAMPLE Start-PSPing -Address "8.8.8.8" -Count 5 -Delay 2 .NOTES The function uses Test-Connection to perform the ping and handles errors gracefully. #> PARAM ( [Parameter(Mandatory)] $Address, $Count = 4, $Delay = 3 ) $Results = @() TRY { $Results = Test-Connection $Address -Count $Count -Delay $Delay -ErrorAction SilentlyContinue | Select-Object -Property Address, BufferSize, @{name='Latency'; e={ if ($null -eq $_.Latency) { $_.ResponseTime}else{ $_.Latency}} }, @{name='Status'; e={ if ($null -eq $_.Status) { if ($_.StatusCode -eq 0) {'Success'}else {'Not Success'} }else { $_.Status } } } } CATCH { $Results = New-Object PSObject -WarningAction SilentlyContinue -Property @{ Address = $Address BufferSize = "" Latency = "" Status = "Address Not Resolved" } } IF ($Results.Count -eq 0) { $Results = New-Object PSObject -WarningAction SilentlyContinue -Property @{ Address = $Address BufferSize = "" Latency = "" Status = "Address Not Resolved" } } RETURN $Results | Select-Object -Property Address, BufferSize, Latency, Status } |