EnvPath.psm1
function Add-EnvPath() { Param ( [Parameter(Position=0)] [ValidateScript({Test-Path $_})] [string] $Path = (Get-Location).Path ) if((Get-EnvPath | where { $_.Path -eq $Path }).count -ne 0) { throw "The current environment path already contains '" + $Path + "'" } $workingpath = [System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::User) if ($workingpath -and !($workingpath -match ';$')) { $workingpath = $workingpath + ';' } $workingpath = $workingpath + $Path [System.Environment]::SetEnvironmentVariable('PATH', $workingpath, [System.EnvironmentVariableTarget]::User) Update-EnvPath New-Object PSObject -Property @{Path=$Path; Scope="User"} } function Get-EnvPath() { ([System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::Machine)+'').trim(';') -split ';' | % {New-Object PSObject -Property @{Path=$_; Scope="Machine"}} ([System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::User)+'').trim(';') -split ';' | % {New-Object PSObject -Property @{Path=$_; Scope="User"}} } function Update-EnvPath() { $machine = ([System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::Machine)+'').trim(';') $user = ([System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::User)+'').trim(';') [System.Environment]::SetEnvironmentVariable('PATH', ($machine + ';' + $user).trim(';'), [System.EnvironmentVariableTarget]::Process) } Export-ModuleMember -Function Add-EnvPath,Get-EnvPath |