diff --git a/Tools.ps1 b/Tools.ps1 index 7611e20..a278e1e 100644 --- a/Tools.ps1 +++ b/Tools.ps1 @@ -1,6 +1,11 @@ ## Define the MSP name [string]$Global:MSPName = "Emberkom" +## Define settings for PSAtera module +[string]$Global:PSAteraMinimumModuleVersion = '1.5.7' +[bool]$Global:InstallPSAteraModule = $true + + ## This section will define several global variables that can be used in scripts that source this one [string]$Global:RootDirectory [string]$Global:ScriptsDirectory @@ -481,5 +486,35 @@ function Toggle-Log { Catch { LogMsg $_.Exception.Message } } +Function Install-PSAteraModule { + $module = (Get-Module -ListAvailable PSAtera) + If ( IsAdmin ) { + If ( $module ) { + [version]$current = $module.Version + [version]$minimum = (Get-Version $Global:PSAteraMinimumModuleVersion) + If ( $current -lt $minimum ) { + LogMsg "Updating Powershell module PSAtera" + Try { Update-Module -Name PSAtera -Force } + Catch { LogErr $_.Exception.Message } + } + } Else { + Try { [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityPotocol -bor 3072 } + Catch { LogErr $_.Exception.Message } + + LogMsg "Installing NuGet package manager" + Try { Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force} + Catch { LogErr $_.Exception.Message } + + LogMsg "Installing Powershell module PSAtera" + Try { Install-Module PSAtera -Force} + Catch { LogErr $_.Exception.Message } + } + } + ElseIf ( ($Global:InstallPSAteraModule) -and (-not ($module)) ) { + LogMsg "The PSAtera module needs to be installed, but the current security context is not sufficient to install it" + } +} + Setup-MSPDirectories -Setup-LogFile \ No newline at end of file +Setup-LogFile +If ( $Global:InstallPSAteraModule ) { Install-PSAteraModule } \ No newline at end of file