change the force nuget block into a function
This commit is contained in:
@@ -225,6 +225,89 @@ $ConfirmPreference = 'None'
|
||||
|
||||
#region SVS Module
|
||||
|
||||
function Initialize-NuGetProvider {
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
#region — guarantee NuGet provider is present without prompting
|
||||
|
||||
# ─── Silent defaults ───
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
$ProgressPreference = 'SilentlyContinue'
|
||||
$ConfirmPreference = 'None'
|
||||
|
||||
# ─── Pre-create folder if running as SYSTEM (avoids NuGet install bug) ───
|
||||
$provPath = "$env:ProgramData\PackageManagement\ProviderAssemblies"
|
||||
if (-not (Test-Path $provPath)) {
|
||||
try {
|
||||
New-Item -Path $provPath -ItemType Directory -Force -ErrorAction Stop | Out-Null
|
||||
Write-LogHybrid "Created missing provider folder: $provPath" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "Failed to create provider folder: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure PowerShellGet is available ───
|
||||
if (-not (Get-Command Install-PackageProvider -ErrorAction SilentlyContinue)) {
|
||||
try {
|
||||
Install-Module PowerShellGet -Force -AllowClobber -Confirm:$false -ErrorAction Stop
|
||||
Write-LogHybrid "Installed PowerShellGet module" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "PowerShellGet install failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure PackageManagement is up-to-date ───
|
||||
$pkgMgmtVersion = (Get-Module PackageManagement -ListAvailable | Sort-Object Version -Descending | Select-Object -First 1).Version
|
||||
if ($pkgMgmtVersion -lt [Version]"1.3.1") {
|
||||
try {
|
||||
Install-Module PackageManagement -Force -AllowClobber -Confirm:$false -ErrorAction Stop
|
||||
Write-LogHybrid "Updated PackageManagement to latest version" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "PackageManagement update failed: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Import modules silently ───
|
||||
Import-Module PackageManagement -Force -ErrorAction SilentlyContinue | Out-Null
|
||||
Import-Module PowerShellGet -Force -ErrorAction SilentlyContinue | Out-Null
|
||||
|
||||
# ─── Trust PSGallery if not already ───
|
||||
$gallery = Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue
|
||||
if ($gallery -and $gallery.InstallationPolicy -ne 'Trusted') {
|
||||
try {
|
||||
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop
|
||||
Write-LogHybrid "PSGallery marked as Trusted" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "Failed to trust PSGallery: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure NuGet is installed silently ───
|
||||
$nuget = Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction SilentlyContinue
|
||||
if (-not $nuget) {
|
||||
try {
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Confirm:$false -ErrorAction Stop
|
||||
$nuget = Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction SilentlyContinue
|
||||
Write-LogHybrid "Installed NuGet provider v$($nuget.Version)" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "NuGet install failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
} else {
|
||||
Write-LogHybrid "NuGet provider already present (v$($nuget.Version))" Info Bootstrap -LogToEvent
|
||||
}
|
||||
|
||||
# ─── Final import check ───
|
||||
try {
|
||||
Import-PackageProvider -Name NuGet -Force -ErrorAction Stop | Out-Null
|
||||
} catch {
|
||||
Write-LogHybrid "NuGet provider import failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
|
||||
#endregion — guarantee NuGet provider is present without prompting
|
||||
}
|
||||
|
||||
|
||||
function Install-SVSMSP {
|
||||
param (
|
||||
[switch] $Cleanup,
|
||||
@@ -280,6 +363,7 @@ $ConfirmPreference = 'None'
|
||||
|
||||
|
||||
function Perform-ToolkitInstallation {
|
||||
Initialize-NuGetProvider
|
||||
Perform-Cleanup
|
||||
Write-LogHybrid "Registering repo $NewRepositoryName…" "Info" "SVSModule" -LogToEvent
|
||||
if (-not (Get-PSRepository -Name $NewRepositoryName -ErrorAction SilentlyContinue)) {
|
||||
@@ -2084,84 +2168,6 @@ function Install-DattoRMM {
|
||||
}
|
||||
#endregion EntryPoint: Define Invoke-ScriptMonkey
|
||||
|
||||
<#
|
||||
#region — guarantee NuGet provider is present without prompting
|
||||
|
||||
# ─── Silent defaults ───
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
$ProgressPreference = 'SilentlyContinue'
|
||||
$ConfirmPreference = 'None'
|
||||
|
||||
# ─── Pre-create folder if running as SYSTEM (avoids NuGet install bug) ───
|
||||
$provPath = "$env:ProgramData\PackageManagement\ProviderAssemblies"
|
||||
if (-not (Test-Path $provPath)) {
|
||||
try {
|
||||
New-Item -Path $provPath -ItemType Directory -Force -ErrorAction Stop | Out-Null
|
||||
Write-LogHybrid "Created missing provider folder: $provPath" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "Failed to create provider folder: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure PowerShellGet is available ───
|
||||
if (-not (Get-Command Install-PackageProvider -ErrorAction SilentlyContinue)) {
|
||||
try {
|
||||
Install-Module PowerShellGet -Force -AllowClobber -Confirm:$false -ErrorAction Stop
|
||||
Write-LogHybrid "Installed PowerShellGet module" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "PowerShellGet install failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure PackageManagement is up-to-date ───
|
||||
$pkgMgmtVersion = (Get-Module PackageManagement -ListAvailable | Sort-Object Version -Descending | Select-Object -First 1).Version
|
||||
if ($pkgMgmtVersion -lt [Version]"1.3.1") {
|
||||
try {
|
||||
Install-Module PackageManagement -Force -AllowClobber -Confirm:$false -ErrorAction Stop
|
||||
Write-LogHybrid "Updated PackageManagement to latest version" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "PackageManagement update failed: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Import modules silently ───
|
||||
Import-Module PackageManagement -Force -ErrorAction SilentlyContinue | Out-Null
|
||||
Import-Module PowerShellGet -Force -ErrorAction SilentlyContinue | Out-Null
|
||||
|
||||
# ─── Trust PSGallery if not already ───
|
||||
$gallery = Get-PSRepository -Name PSGallery -ErrorAction SilentlyContinue
|
||||
if ($gallery -and $gallery.InstallationPolicy -ne 'Trusted') {
|
||||
try {
|
||||
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop
|
||||
Write-LogHybrid "PSGallery marked as Trusted" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "Failed to trust PSGallery: $($_.Exception.Message)" Warn Bootstrap -LogToEvent
|
||||
}
|
||||
}
|
||||
|
||||
# ─── Ensure NuGet is installed silently ───
|
||||
$nuget = Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction SilentlyContinue
|
||||
if (-not $nuget) {
|
||||
try {
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Confirm:$false -ErrorAction Stop
|
||||
$nuget = Get-PackageProvider -Name NuGet -ListAvailable -ErrorAction SilentlyContinue
|
||||
Write-LogHybrid "Installed NuGet provider v$($nuget.Version)" Info Bootstrap -LogToEvent
|
||||
} catch {
|
||||
Write-LogHybrid "NuGet install failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
} else {
|
||||
Write-LogHybrid "NuGet provider already present (v$($nuget.Version))" Info Bootstrap -LogToEvent
|
||||
}
|
||||
|
||||
# ─── Final import check ───
|
||||
try {
|
||||
Import-PackageProvider -Name NuGet -Force -ErrorAction Stop | Out-Null
|
||||
} catch {
|
||||
Write-LogHybrid "NuGet provider import failed: $($_.Exception.Message)" Error Bootstrap -LogToEvent
|
||||
}
|
||||
|
||||
#endregion guarantee NuGet provider is present without prompting
|
||||
#>
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user