PowerShell: Function to Wait for Service to Be Back Online (After Server Reboots)

# Set the server name and port to test
$server="localhost"
$port=443

Function waitForService{
$testSucceeded=(Test-NetConnection $server -port $port).TcpTestSucceeded

if (!($testSucceeded)){
Write-Host -NoNewline "Waiting for $server to come back online."
$dots=50
$timeout=300 #5 minutes
while (!($testSucceeded)) {
$dots-=1;
$timeout-=2;
if($timeout -lt 0){"$timeout seconds have passed. Skip this waiting.";continue;}
if ($dots -eq 0){Write-Host ".";$dots=92;}
else {Write-Host -NoNewline "."}
Start-Sleep -s 2
$testSucceeded.Refresh()
}
}
"$server is now accessible at port $port"
}

waitForService

Leave a Reply

Your email address will not be published. Required fields are marked *