diff --git a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 index eddac73da..f113071d9 100644 --- a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 +++ b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 @@ -519,7 +519,7 @@ function Get-WindowsUpdatesHistory { 43 { $status = "InProgress" $title = $event.Properties[0].Value - break + break } } @@ -538,7 +538,7 @@ function Invoke-SBWithRetry { param ( [scriptblock] $Command, [int] $RetryCount = 10, - [int] $TimeoutInSecs = 5 + [int] $RetryIntervalSeconds = 5 ) while ($RetryCount -gt 0) { @@ -547,15 +547,15 @@ function Invoke-SBWithRetry { return } catch { - Write-Host "There is an error encounterd:`n $_" + Write-Host "There is an error encountered:`n $_" $RetryCount-- if ($RetryCount -eq 0) { exit 1 } - Write-Host "Waiting $TimeoutInSecs seconds before retrying. Retries left: $RetryCount" - Start-Sleep -Seconds $TimeoutInSecs + Write-Host "Waiting $RetryIntervalSeconds seconds before retrying. Retries left: $RetryCount" + Start-Sleep -Seconds $RetryIntervalSeconds } } } diff --git a/images/win/scripts/Installers/Wait-WindowsUpdatesForInstall.ps1 b/images/win/scripts/Installers/Wait-WindowsUpdatesForInstall.ps1 new file mode 100644 index 000000000..2039e9396 --- /dev/null +++ b/images/win/scripts/Installers/Wait-WindowsUpdatesForInstall.ps1 @@ -0,0 +1,12 @@ +################################################################################ +## File: Wait-WindowsUpdatesForInstall.ps1 +## Desc: Wait for installation windows updates to complete +################################################################################ + +Invoke-SBWithRetry -RetryCount 10 -RetryIntervalSeconds 120 -Command { + $inProgress = Get-WindowsUpdatesHistory | Where-Object Status -eq "InProgress" + if ( $inProgress ) { + $title = $inProgress.Title -join "`n" + throw "InProgress: $title" + } +} diff --git a/images/win/windows2019.json b/images/win/windows2019.json index abeec44b0..09797cdb3 100644 --- a/images/win/windows2019.json +++ b/images/win/windows2019.json @@ -274,6 +274,7 @@ "type": "powershell", "pause_before": "2m", "scripts": [ + "{{ template_dir }}/scripts/Installers/Wait-WindowsUpdatesForInstall.ps1", "{{ template_dir }}/scripts/Tests/RunAll-Tests.ps1" ] }, diff --git a/images/win/windows2022.json b/images/win/windows2022.json index 948afff76..431757235 100644 --- a/images/win/windows2022.json +++ b/images/win/windows2022.json @@ -251,11 +251,15 @@ }, { "type": "windows-restart", + "check_registry": true, + "restart_check_command": "powershell -command \"& {if ((-not (Get-Process TiWorker.exe -ErrorAction SilentlyContinue)) -and (-not [System.Environment]::HasShutdownStarted) ) { Write-Output 'Restart complete' }}\"", "restart_timeout": "30m" }, { "type": "powershell", + "pause_before": "2m", "scripts": [ + "{{ template_dir }}/scripts/Installers/Wait-WindowsUpdatesForInstall.ps1", "{{ template_dir }}/scripts/Tests/RunAll-Tests.ps1" ] },