feature(wakeup): run multiple connectivity checks up to timeout
This commit is contained in:
parent
0119923ed7
commit
5332818990
31
wakeup.ps1
31
wakeup.ps1
@ -131,6 +131,7 @@ $targetComputers | ForEach-Object {
|
||||
else
|
||||
{
|
||||
Write-Host -ForegroundColor Red "[ERROR]"
|
||||
# queue for removal from computers on which to run a connectivity check
|
||||
$removeFromTargetComputers.Add($name)
|
||||
}
|
||||
}
|
||||
@ -152,7 +153,7 @@ elseif ($targetComputers.Count -eq 0)
|
||||
exitError "No wake-up packets sent successfully" -exitCode 5
|
||||
}
|
||||
|
||||
# wait for initialWaitTime seconds to let computer(s) wake up
|
||||
# wait for initial delay seconds to let computer(s) wake up
|
||||
for ($i = $ConnectivityCheckDelay; $i -gt 0; $i--) {
|
||||
Write-Progress -Activity "Waiting for computer(s) to wake-up..." -SecondsRemaining $i
|
||||
Start-Sleep 1
|
||||
@ -162,9 +163,11 @@ Write-Progress -Activity "Waiting for computer(s) to wake-up..." -Completed
|
||||
# iterate computers and test connectivity
|
||||
# TODO: run multiple connectivity tests as needed, spaced evenly apart up to max timeout THEN fail
|
||||
# TODO: run connectivity test as background job
|
||||
|
||||
|
||||
$targetComputers | ForEach-Object {
|
||||
$connCheckTotalTime = 0
|
||||
$removeFromTargetComputers.Clear()
|
||||
while ($connCheckTotalTime -le $ConnectivityCheckTimeout -and $targetComputers.Count -gt 0)
|
||||
{
|
||||
$targetComputers | ForEach-Object {
|
||||
$name = $_.name
|
||||
$friendlyName = $_.friendlyName
|
||||
$fqdn = -join ($name, $dnsSuffix)
|
||||
@ -189,6 +192,26 @@ $targetComputers | ForEach-Object {
|
||||
else
|
||||
{
|
||||
Write-Host -ForegroundColor Green "[OK]"
|
||||
# queue for removal from computers to check next round
|
||||
$removeFromTargetComputers.Add($name)
|
||||
}
|
||||
}
|
||||
|
||||
# remove computers from targetComputers if connectivity check already successful
|
||||
$removeFromTargetComputers | ForEach-Object {
|
||||
$removeName = $_
|
||||
$targetComputers.Remove(($targetComputers | Where-Object { $_.name -eq $removeName })) | Out-Null
|
||||
}
|
||||
|
||||
# sleep until next test interval and increase time counter
|
||||
if ($targetComputers.Count -gt 0)
|
||||
{
|
||||
for ($i = $ConnectivityCheckInterval; $i -gt 0; $i--) {
|
||||
Write-Progress -Activity "Waiting for next connectivity check..." -SecondsRemaining $i
|
||||
Start-Sleep 1
|
||||
}
|
||||
Write-Progress -Activity "Waiting for next connectivity check..." -Completed
|
||||
$connCheckTotalTime += $ConnectivityCheckInterval
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user