From d714111a0d25184871dd88873b01502395119519 Mon Sep 17 00:00:00 2001 From: Jared Holgate Date: Wed, 17 Dec 2025 19:22:02 +0000 Subject: [PATCH 1/2] feat: support allusers scope --- src/ALZ/Private/Tools/Test-Tooling.ps1 | 47 ++++++++++++++++++-------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/ALZ/Private/Tools/Test-Tooling.ps1 b/src/ALZ/Private/Tools/Test-Tooling.ps1 index 93254ad..87f42da 100644 --- a/src/ALZ/Private/Tools/Test-Tooling.ps1 +++ b/src/ALZ/Private/Tools/Test-Tooling.ps1 @@ -157,12 +157,22 @@ function Test-Tooling { } } + $currentScope = "CurrentUser" + if($skipAlzModuleVersionCheck.IsPresent) { Write-Verbose "Skipping ALZ module version check" } else { # Check if latest ALZ module is installed Write-Verbose "Checking ALZ module version" - $alzModuleCurrentVersion = Get-InstalledPSResource -Name ALZ | Select-Object -Property Name, Version | Sort-Object Version -Descending | Select-Object -First 1 + $alzModuleCurrentVersion = Get-InstalledPSResource -Name ALZ 2>$null | Select-Object -Property Name, Version | Sort-Object Version -Descending | Select-Object -First 1 + if($null -eq $alzModuleCurrentVersion) { + Write-Verbose "ALZ module not found in CurrentUser scope, checking AllUsers scope" + $alzModuleCurrentVersion = Get-InstalledPSResource -Name ALZ -Scope AllUsers 2>$null | Select-Object -Property Name, Version | Sort-Object Version -Descending | Select-Object -First 1 + if($null -ne $alzModuleCurrentVersion) { + Write-Verbose "ALZ module found in AllUsers scope" + $currentScope = "AllUsers" + } + } if($null -eq $alzModuleCurrentVersion) { $checkResults += @{ @@ -191,31 +201,40 @@ function Test-Tooling { # Check if powershell-yaml module is installed (only when YAML files are being used) if ($checkYamlModule.IsPresent) { Write-Verbose "Checking powershell-yaml module installation" - $yamlModule = Get-InstalledPSResource -Name powershell-yaml 2> $null + $yamlModule = Get-InstalledPSResource -Name powershell-yaml 2> $null | Select-Object -Property Name, Version | Sort-Object Version -Descending | Select-Object -First 1 + if($null -eq $yamlModule) { + Write-Verbose "powershell-yaml module not found in CurrentUser scope, checking AllUsers scope" + $yamlModule = Get-InstalledPSResource -Name powershell-yaml -Scope AllUsers 2> $null | Select-Object -Property Name, Version | Sort-Object Version -Descending | Select-Object -First 1 + } + if ($yamlModule) { $checkResults += @{ message = "powershell-yaml module is installed (version $($yamlModule.Version))." result = "Success" } } else { - $installSuccessful = $false - try { - Install-PSResource powershell-yaml -TrustRepository - $installSuccessful = $true - } catch { - Write-Verbose "Failed to install powershell-yaml module" - } - if($installSuccessful) { + Write-Verbose "powershell-yaml module is not installed, attempting installation" + $installResult = Install-PSResource powershell-yaml -TrustRepository -Scope $currentScope 2>&1 + if($installResult -like "*Access to the path*") { + Write-Verbose "Failed to install powershell-yaml module due to permission issues at $currentScope scope." $checkResults += @{ - message = "powershell-yaml module was not installed, but has been successfully installed (version $((Get-InstalledPSResource -Name powershell-yaml).Version))." - result = "Success" + message = "powershell-yaml module is not installed. Please install it using an admin terminal with 'Install-PSResource powershell-yaml -Scope $currentScope'. Could not install due to permission issues." + result = "Failure" } - } else { + $hasFailure = $true + } elseif ($null -ne $installResult) { + Write-Verbose "Failed to install powershell-yaml module: $installResult" $checkResults += @{ - message = "powershell-yaml module is not installed. Please install it using 'Install-PSResource powershell-yaml'." + message = "powershell-yaml module is not installed. Please install it using 'Install-PSResource powershell-yaml -Scope $currentScope'. Attempted installation error: $installResult" result = "Failure" } $hasFailure = $true + } else { + $installedVersion = (Get-InstalledPSResource -Name powershell-yaml -Scope $currentScope).Version + $checkResults += @{ + message = "powershell-yaml module was not installed, but has been successfully installed (version $installedVersion)." + result = "Success" + } } } } From 3ee337d379f27569b410d52930d96d8d16ff88d6 Mon Sep 17 00:00:00 2001 From: Jared Holgate Date: Wed, 17 Dec 2025 19:29:56 +0000 Subject: [PATCH 2/2] include parameter to skip install attempt --- src/ALZ/Private/Tools/Test-Tooling.ps1 | 11 ++++++++++- src/ALZ/Public/Deploy-Accelerator.ps1 | 9 ++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ALZ/Private/Tools/Test-Tooling.ps1 b/src/ALZ/Private/Tools/Test-Tooling.ps1 index 87f42da..771a900 100644 --- a/src/ALZ/Private/Tools/Test-Tooling.ps1 +++ b/src/ALZ/Private/Tools/Test-Tooling.ps1 @@ -4,7 +4,9 @@ function Test-Tooling { [Parameter(Mandatory = $false)] [switch]$skipAlzModuleVersionCheck, [Parameter(Mandatory = $false)] - [switch]$checkYamlModule + [switch]$checkYamlModule, + [Parameter(Mandatory = $false)] + [switch]$skipYamlModuleInstall ) $checkResults = @() @@ -212,6 +214,13 @@ function Test-Tooling { message = "powershell-yaml module is installed (version $($yamlModule.Version))." result = "Success" } + } elseif ($skipYamlModuleInstall.IsPresent) { + Write-Verbose "powershell-yaml module is not installed, skipping installation attempt" + $checkResults += @{ + message = "powershell-yaml module is not installed. Please install it using 'Install-PSResource powershell-yaml -Scope $currentScope'." + result = "Failure" + } + $hasFailure = $true } else { Write-Verbose "powershell-yaml module is not installed, attempting installation" $installResult = Install-PSResource powershell-yaml -TrustRepository -Scope $currentScope 2>&1 diff --git a/src/ALZ/Public/Deploy-Accelerator.ps1 b/src/ALZ/Public/Deploy-Accelerator.ps1 index 6cb4818..d554540 100644 --- a/src/ALZ/Public/Deploy-Accelerator.ps1 +++ b/src/ALZ/Public/Deploy-Accelerator.ps1 @@ -162,6 +162,13 @@ function Deploy-Accelerator { [Alias("skipAlzModuleVersionRequirementsCheck")] [switch] $skip_alz_module_version_requirements_check, + [Parameter( + Mandatory = $false, + HelpMessage = "[OPTIONAL] Determines whether to skip attempting to install the powershell-yaml module if it is not installed." + )] + [Alias("skipYamlModuleInstall")] + [switch] $skip_yaml_module_install, + [Parameter( Mandatory = $false, HelpMessage = "[OPTIONAL] Determines whether Clean the bootstrap folder of Terraform meta files. Only use for development purposes." @@ -204,7 +211,7 @@ function Deploy-Accelerator { Write-InformationColored "WARNING: Skipping the software requirements check..." -ForegroundColor Yellow -InformationAction Continue } else { Write-InformationColored "Checking the software requirements for the Accelerator..." -ForegroundColor Green -InformationAction Continue - Test-Tooling -skipAlzModuleVersionCheck:$skip_alz_module_version_requirements_check.IsPresent -checkYamlModule:$hasYamlFiles + Test-Tooling -skipAlzModuleVersionCheck:$skip_alz_module_version_requirements_check.IsPresent -checkYamlModule:$hasYamlFiles -skipYamlModuleInstall:$skip_yaml_module_install.IsPresent } Write-InformationColored "Getting ready to deploy the accelerator with you..." -ForegroundColor Green -NewLineBefore -InformationAction Continue