. "$PSScriptRoot/../../Types/InstallerAction.ps1"; $null = New-Module { . "$PSScriptRoot/../../Software/PowerShell/Profile.ps1"; <# .SYNOPSIS Generates the components for creating a module installer. .PARAMETER Name The name of the module to install. #> function Get-ModuleInstallerComponents { param( [string] $Name ) @{ arguments = @{ name = $Name; }; installer = { param( [scriptblock] $Installer, [hashtable] $Arguments ) $env:PENDING_MODULE_NAME = $Arguments.Name; $installAction = { Install-Module -Scope AllUsers -Force $env:PENDING_MODULE_NAME @args }; & $installAction -AcceptLicense; if (Test-Command powershell) { powershell -c ($installAction.ToString()); } Remove-Item Env:\PENDING_MODULE_NAME; & $Installer -Action ([InstallerAction]::Configure) @PSBoundParameters; }; configurator = { param( [hashtable] $Arguments ) $name = $Arguments.Name; Add-PowerShellProfileStatement ` -DefaultUser ` -Category $name ` -Script "Import-Module `"$name`";"; }; } } };