Install-RequiredModule.ps1
<#PSScriptInfo
.VERSION 5.0.2 .GUID 295c5e90-c699-4a39-8db2-cb71e564a32d .AUTHOR Joel 'Jaykul' Bennett .COMPANYNAME PoshCode .COPYRIGHT Copyright (c) 2020 Joel Bennett .TAGS Install Requirements Development Dependencies Modules Install Requirements Development Dependencies Modules .LICENSEURI https://github.com/Jaykul/RequiredModules/blob/master/LICENSE .PROJECTURI https://github.com/Jaykul/RequiredModules .ICONURI https://github.com/Jaykul/RequiredModules/blob/master/resources/RequiredModules.png?raw=true .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 5.0.1 Fix PowerShell 5 .Where bug again (sorry) 5.0.0 Available as a module, with multiple repository support BREAKING CHANGES: - No longer automatically trusts PSGallery. You must ensure that there is at least one repository registered and trusted, or use the `-TrustRegisteredRepositories` to trust all repositories. - Allows installing from any trusted repository. There is also new syntax for the RequiredModules hashtables to support specifying a specific repository for any specific module. See the ReadMe or the help for Install-RequiredModule. MAJOR IMPROVEMENTS: - Supports passing the RequiredModules hashtable directly on the commandline, rather than requiring a file. - Also available in the "RequiredModules" module By default, we only install from trusted repositories. You should mark the repositories you regularly install from as trusted repositories. See the following example to trust the default PSGallery: Register-PSRepository -Default -ErrorAction Ignore -InstallationPolicy Trusted Get-PSRepository -Name PSGallery | Set-PSRepository -InstallationPolicy Trusted 4.1.1 Minor fixes for edge cases and options 4.1.0 Support non-PSGallery feeds 4.0.6 Fix a double -Verbose problem 4.0.5 Let the -Destination be non-empty (so we do not have to re-download every time) 4.0.4 Fix PowerShell 5 .Where bug 4.0.3 Fix module check when using -Destination to force all modules to be in destination 4.0.2 Fix Remove-Module error 4.0.1 Add logging outputs 4.0.0 BREAKING CHANGE: require the -Destination to start empty (allow -CleanDestination to clear it) Fix for adding the destination to PSModulePath multiple times Started testing this so I can ship it to PowerShellGet 3.0.0 BREAKING CHANGE: switch -SkipImport to -Import -- inverting the logic to NOT import by default Add -Destination parameter to support installing in a local tool path 2.0.1 Squash mistaken "InstallError" message caused by Select-Object -First Clean up output that was unexpected 2.0.0 BREAKING CHANGE: use NuGetVersion to support wildcards like 3.* Improve the error messages around aborted or failed installs 1.0.1 Fix "Version 3.4.0 of module Pester is already installed" 1.0.0 This is the first public release - it probably does not work right .PRIVATEDATA #> <# .SYNOPSIS Installs (and imports) modules listed in RequiredModules.psd1 .DESCRIPTION Parses a RequiredModules.psd1 listing modules and attempts to import those modules. If it can't find the module in the PSModulePath, attempts to install it from PowerShellGet. The RequiredModules list looks like this (uses nuget version range syntax, and now, has an optional syntax for specifying the repository to install from): @{ "PowerShellGet" = "2.0.4" "Configuration" = "[1.3.1,2.0)" "Pester" = "[4.4.2,4.7.0]" "ModuleBuilder" = @{ Version = "2.*" Repository = "https://www.powershellgallery.com/api/v2" } } https://docs.microsoft.com/en-us/nuget/reference/package-versioning#version-ranges-and-wildcards .EXAMPLE Install-RequiredModule Runs the install interactively: - reads the default 'RequiredModules.psd1' from the current folder - prompts for each module that needs to be installed .EXAMPLE Install-Script Install-RequiredModule Install-RequiredModule @{ "Configuration" = @{ Version = "[1.3.1,2.0)" Repository = "https://www.powershellgallery.com/api/v2" } "ModuleBuilder" = @{ Version = "2.*" Repository = "https://www.powershellgallery.com/api/v2" } } This is one way you can use Install-Required module in a build script to ensure the required module are available. .EXAMPLE Save-Script Install-RequiredModule -Path ./RequiredModules ./RequiredModules/Install-RequiredModule.ps1 -Path ./RequiredModules.psd1 -Confirm:$false -Destination ./RequiredModules -TrustRegisteredRepositories This shows another way to use required modules in a build script without changing the machine as much (keeping all the files locally) and supressing prompts, trusting repositories that are already registerered #> [CmdletBinding(DefaultParameterSetName="FromFile", ConfirmImpact="High", SupportsShouldProcess)] param( # The path to a metadata file listing required modules. Defaults to "RequiredModules.psd1" (in the current working directory). [Parameter(Position=0, ParameterSetName="FromFile")] [Parameter(Position=0, ParameterSetName="LocalToolsFromFile")] [Alias("Path")] [string]$RequiredModulesFile = "RequiredModules.psd1", [Parameter(Position=0, ParameterSetName="FromHash", Mandatory)] [hashtable]$RequiredModules, # If set, the local tools Destination path will be cleared and recreated [Parameter(ParameterSetName="LocalToolsFromFile")] [Switch]$CleanDestination, # If set, saves the modules to a local path rather than installing them to the scope [Parameter(Position=1, ParameterSetName="LocalToolsFromFile", Mandatory)] [string]$Destination, # The scope in which to install the modules (defaults to "CurrentUser") [ValidateSet("CurrentUser", "AllUsers")] $Scope = "CurrentUser", # Automatically trust all repositories registered in the environment. # This allows you to leave some repositories set as "Untrusted" # but trust them for the sake of installing the modules specified as required [switch]$TrustRegisteredRepositories, # Suppress normal host information output [Switch]$Quiet, # If set, the specififed modules are imported (after they are installed, if necessary) [Switch]$Import ) $null = '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' | .{ <# .SYNOPSIS Expands a string and loads it as an assembly or scriptblock .DESCRIPTION Converts Base64 encoded string to bytes and decompresses (gzip) it, before attempting to load or execute the result .LINK CompressToString #> [CmdletBinding(DefaultParameterSetName = "ByteArray")] param( # A Base64 encoded and deflated assembly or script [Parameter(Mandatory, ValueFromPipeline)] [string]$Base64Content ) process { $DeflateStream = [System.IO.Compression.DeflateStream]::new( [System.IO.MemoryStream][System.Convert]::FromBase64String($Base64Content), [System.IO.Compression.CompressionMode]::Decompress) $OutputStream = [System.IO.MemoryStream]::new() $DeflateStream.CopyTo($OutputStream) [System.Reflection.Assembly]::Load($OutputStream.ToArray()) trap { $null = $OutputStream.Seek(0, "Begin") # If it's a script, deal with the BOM and import it as a module in the global scope $Source = [System.IO.StreamReader]::new($OutputStream, $true).ReadToEnd() New-Module ([ScriptBlock]::Create($Source)) -Verbose:$false | Import-Module -Scope Global -Verbose:$false continue } } } Install-RequiredModule @PSBoundParameters |