diff --git a/scripts/Common/Software/PowerShell/Module.ps1 b/scripts/Common/Software/PowerShell/Module.ps1 index 03f49067..7f021388 100644 --- a/scripts/Common/Software/PowerShell/Module.ps1 +++ b/scripts/Common/Software/PowerShell/Module.ps1 @@ -34,7 +34,14 @@ $null = New-Module { ) $env:PENDING_MODULE_NAME = $Arguments.Name; - $installAction = { Install-Module -Scope AllUsers -Force $env:PENDING_MODULE_NAME @args }; + + $installAction = { + $module = $env:PENDING_MODULE_NAME; + + if (-not (Get-Module -ListAvailable $module -ErrorAction SilentlyContinue)) { + Install-Module -Scope AllUsers -Force $module @args; + } + }; if (-not $Arguments.NativeOnly) { & $installAction -AcceptLicense; diff --git a/scripts/Windows/Software/PinnedItem/Manage.ps1 b/scripts/Windows/Software/PinnedItem/Manage.ps1 index 2bd7966c..27187fa3 100644 --- a/scripts/Windows/Software/PinnedItem/Manage.ps1 +++ b/scripts/Windows/Software/PinnedItem/Manage.ps1 @@ -20,12 +20,15 @@ Start-SoftwareInstaller @parameters -Installer { [hashtable] $Arguments ) - $feature = "NetFx3"; - - if ((Get-WindowsOptionalFeature -Online -FeatureName $feature).State -ne "Enabled") { - Write-Host "Enabling ``$feature`` featureā€¦"; - choco install --source windowsFeatures -y $feature; - } - + $module = $Arguments.Name; & $Arguments.Installer @PSBoundParameters; + + if (-not (& { powershell -NoProfile -Command "Import-Module $module; exit ([bool]`$Error)" 2> $null; $?; })) { + $feature = "NetFx3"; + + if ((Get-WindowsOptionalFeature -Online -FeatureName $feature).State -ne "Enabled") { + Write-Host "Enabling ``$feature`` featureā€¦"; + choco install --source windowsFeatures -y $feature; + } + } }