private/Add-Path.ps1

Function Add-Path {
    <#
    .SYNOPSIS
        Add a directory to PATH environment variable.
    .PARAMETER PathItem
        The directory to add to PATH.
    #>

    [OutputType()]
    param(
        [Parameter(Mandatory = $true, Position=0, HelpMessage='Path to Add')]
        [ValidateNotNull()]
        [ValidateLength(1, [int]::MaxValue)]
        [string] $PathItem
    )
    begin {
    }
    process {
        $currentUserPath = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::User)
        $machinePath = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)
        $currentPath = $currentUserPath + ";" + $machinePath
        if (-not($currentPath.Split(';').Contains(($PathItem + ";")))) {
            $newUserPath = $PathItem + ";" + $currentUserPath
            [System.Environment]::SetEnvironmentVariable("PATH", $newUserPath, [System.EnvironmentVariableTarget]::User)
            $machinePath = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)
            $env:PATH = $newUserPath + ";" + $machinePath
        }
    }
    end {
    }
}