Public/Start-TunerChocoPackages.ps1

#requires -RunAsAdministrator
function Start-TunerChocoPackages {
    <#
    .SYNOPSIS
        Installs list of Chocolatey packages
    .DESCRIPTION
        Installs list of Chocolatey packages
    .PARAMETER PackageName
        Name of one or more Chocolatey packages to upgrade or install.
        Note that if a given package is not installed, it will be installed.
    .PARAMETER Configuration
        User role-based configuration template: Basic (default), AppDev, AppDevPro,
        SysAdmin and Consultant. Controls the chocolatey packages that get installed
        and additional PowerShell modules that will be installed.
    .PARAMETER ConfigurationsPath
        Custom path to configuration .txt files (basic.txt, appdev.txt, etc.)
    .EXAMPLE
        Start-TunerChocoPackages
        Installs list from "Basic" profile configuration (see /assets/basic.txt for list of packages)
    .EXAMPLE
        Start-TunerChocoPackages 'vlc'
        Installs VLC player package only
    .EXAMPLE
        Start-TunerChocoPackages -PackageName ('7zip','vlc','notepadplusplus')
        Installs packages named in array
    .EXAMPLE
        Start-TunerChocoPackages -Configuration Consultant -ConfigurationPath "\\server3\docs\configs\"
        Install list from "Consultant" profile configuration found in custom path "\\server3\docs\configs\"
    .NOTES
        If -PackageName is not empty/null, it overrides the -Configuration parameter (one or the other only)
    .LINK
        https://chocolatey.org
    #>

    [CmdletBinding(SupportsShouldProcess = $True)]
    param (
        [parameter(Mandatory = $False, HelpMessage = "Chocolatey Package names")]
        [ValidateNotNullOrEmpty()]
        [string[]] $PackageName = "",
        [parameter(Mandatory = $False, HelpMessage = "Tuner setup configuration")]
        [ValidateSet('Basic', 'AppDev', 'AppDevPro', 'SysAdmin', 'Consultant')]
        [string] $Configuration = "Basic",
        [parameter(Mandatory = $False, HelpMessage = "Path to custom configuration files")]
        [string] $ConfigurationsPath = ""
    )
    try {
        Set-TunerChoco
        Write-Verbose "installing chocolatey packages (you may want to grab lunch)..."
        $counter = 0
        if ([string]::IsNullOrEmpty($PackageName)) {
            Install-TunerChocoPackages -Path $ConfigurationsPath -FileName "$Configuration.txt"
        }
        else {
            $PackageName | ForEach-Object { cup $_ -y; $counter++ }
            Write-Host "$counter packages were processed" -ForegroundColor Green
        }
    }
    catch {
        Write-Error $Error[0].Exception.Message
    }
}

Export-ModuleMember -Function Start-TunerChocoPackages