From 7719ddb63a9f6a685ca00dae9988d9fe1970566b Mon Sep 17 00:00:00 2001 From: camedk <77289637+camedk@users.noreply.github.com> Date: Mon, 8 Feb 2021 21:34:25 +0100 Subject: [PATCH 1/5] Looping while install disk initialises The disk is not always ready when looping through the drives hence failing with no install media found - especially with multiple pd-standard --- .../upgrade_script_2008r2_to_2012r2.ps1 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 index b7ae2b2ee..ef5e212e0 100644 --- a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 +++ b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 @@ -43,12 +43,19 @@ online disk noerr } # Find the drive which contains install media. - $Drives = Get-WmiObject Win32_LogicalDisk + For ($i=0; $i -le 5; $i++) { + $Drives = Get-WmiObject Win32_LogicalDisk ForEach ($Drive in $Drives) { if (Test-Path "$($Drive.DeviceID)\Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_English") { $script:install_media_drive = "$($Drive.DeviceID)" } } + if ($script:install_media_drive){break} + "Disk not ready yet - waiting" + Start-Sleep -Seconds 5 + } + + if (!$script:install_media_drive) { throw "No install media found." } From f6b8a27bed017c5f319a102ee565c90cb47fc9d0 Mon Sep 17 00:00:00 2001 From: camedk <77289637+camedk@users.noreply.github.com> Date: Mon, 8 Feb 2021 21:50:15 +0100 Subject: [PATCH 2/5] Update upgrade_script_2008r2_to_2012r2.ps1 --- .../gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 index ef5e212e0..3f7e04af6 100644 --- a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 +++ b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 @@ -51,7 +51,7 @@ online disk noerr } } if ($script:install_media_drive){break} - "Disk not ready yet - waiting" + Write-Host "Disk not ready yet - waiting" Start-Sleep -Seconds 5 } From c08a161285d4057ee4348e1e9f1f56a24b64905d Mon Sep 17 00:00:00 2001 From: camedk <77289637+camedk@users.noreply.github.com> Date: Mon, 8 Feb 2021 22:06:57 +0100 Subject: [PATCH 3/5] Update upgrade_script_2008r2_to_2012r2.ps1 --- .../upgrade_script_2008r2_to_2012r2.ps1 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 index 3f7e04af6..de85f1dd6 100644 --- a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 +++ b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 @@ -43,16 +43,16 @@ online disk noerr } # Find the drive which contains install media. - For ($i=0; $i -le 5; $i++) { + For ($i=0; $i -lt 5; $i++) { $Drives = Get-WmiObject Win32_LogicalDisk - ForEach ($Drive in $Drives) { - if (Test-Path "$($Drive.DeviceID)\Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_English") { - $script:install_media_drive = "$($Drive.DeviceID)" + ForEach ($Drive in $Drives) { + if (Test-Path "$($Drive.DeviceID)\Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_English") { + $script:install_media_drive = "$($Drive.DeviceID)" + } } - } - if ($script:install_media_drive){break} - Write-Host "Disk not ready yet - waiting" - Start-Sleep -Seconds 5 + if ($script:install_media_drive){break} + Write-Host "Disk not ready yet - waiting" + Start-Sleep -Seconds 5 } From fbf698afc895e3481ac69abc625a3474022e9462 Mon Sep 17 00:00:00 2001 From: camedk <77289637+camedk@users.noreply.github.com> Date: Tue, 2 Mar 2021 22:06:42 +0100 Subject: [PATCH 4/5] Update cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 Co-authored-by: Brian Katyl --- .../gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 index de85f1dd6..13307917f 100644 --- a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 +++ b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 @@ -43,7 +43,7 @@ online disk noerr } # Find the drive which contains install media. - For ($i=0; $i -lt 5; $i++) { + For ($i=1; $i -le 5; $i++) { $Drives = Get-WmiObject Win32_LogicalDisk ForEach ($Drive in $Drives) { if (Test-Path "$($Drive.DeviceID)\Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_English") { From 93b60bf4802a6a19135ade61b23ee28e0a382c68 Mon Sep 17 00:00:00 2001 From: camedk <77289637+camedk@users.noreply.github.com> Date: Tue, 2 Mar 2021 22:13:10 +0100 Subject: [PATCH 5/5] Apply suggestions from code review Co-authored-by: Brian Katyl --- .../upgrade_script_2008r2_to_2012r2.ps1 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 index 13307917f..90c3ccb5e 100644 --- a/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 +++ b/cli_tools/gce_windows_upgrade/upgrade_script_2008r2_to_2012r2.ps1 @@ -50,14 +50,16 @@ online disk noerr $script:install_media_drive = "$($Drive.DeviceID)" } } - if ($script:install_media_drive){break} - Write-Host "Disk not ready yet - waiting" + if ($script:install_media_drive) { + break + } + Write-Host "Install media not found, retrying in 5 seconds. Attempt $i of 5." Start-Sleep -Seconds 5 } if (!$script:install_media_drive) { - throw "No install media found." + throw "No install media found after 5 attempts." } Write-Host "Detected install media folder drive letter: $script:install_media_drive"