param( [Parameter(Mandatory = $true)] [string]$TargetHost, [Parameter(Mandatory = $false)] [int]$Port ) function Test-Ping { param([string]$ComputerName) if (Test-Connection -ComputerName $ComputerName -Count 1 -Quiet) { Write-Host "[$ComputerName] is reachable via ICMP (ping)." } else { Write-Host "[$ComputerName] did not respond to ICMP (ping)." } } function Test-Port { param([string]$ComputerName, [int]$Port) $result = Test-NetConnection -ComputerName $ComputerName -Port $Port -InformationLevel Quiet if ($result) { Write-Host "[$ComputerName]:$Port is reachable (TCP connect succeeded)." } else { Write-Host "[$ComputerName]:$Port is not reachable." } } # --- Main execution --- Test-Ping -ComputerName $TargetHost if ($Port) { Test-Port -ComputerName $TargetHost -Port $Port } # Example calls: # Test-Ping -Host "8.8.8.8" # Test-Port -Host "google.com" -Port 443 Test-NetConnection -ComputerName 192.168.75.125 -Port 5118