Simon Ordo
Simon Ordo

Reputation: 1667

Powershell add to path, temporarily

I'm trying to write a simple PowerShell script to deploy a Visual Studio ASPNET Core 1 project.

Currently, in a batch file i can say

Path=.\node_modules\.bin;%AppData%\npm;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Web\External;%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Web\External\git

That will modify the path variable for the duration of the session... for the life of me I can't figure out how to do this simple thing in powershell.

Can someone help me translate this into powershell?

TIA!

Upvotes: 67

Views: 70306

Answers (2)

Bill_Stewart
Bill_Stewart

Reputation: 24515

Option 1: Modify the $env:Path Variable

  1. Append to the Path variable in the current window:

    $env:Path += ";C:\New directory 1;C:\New directory 2"
    
  2. Prefix the Path variable in the current window:

    $env:Path = "C:\New directory 1;C:\New directory 2;" + $env:Path
    
  3. Replace the Path variable in the current window (use with caution!):

    $env:Path = "C:\New directory 1;C:\New directory 2"
    

Option 2: Use the editenv Utility

I wrote a Windows command-line tool called editenv that lets you interactively edit the content of an environment variable. It works from a Windows console (notably, it does not work from the PowerShell ISE):

editenv Path

This can be useful when you want to edit and rearrange the directories in your Path in a more interactive fashion, and it affects only the current window.

Upvotes: 111

Bacon Bits
Bacon Bits

Reputation: 32145

You can just use $env:Path, but if you're anxious that that isn't explicit enough, you can use System.Environment.SetEnvironmentVariable():

[System.Environment]::SetEnvironmentVariable('Path',$Value,[System.EnvironmentVariableTarget]::Process);

And GetEnvironmentVariable() can explicitly retrieve:

[System.Environment]::GetEnvironmentVariable('Path',[System.EnvironmentVariableTarget]::Process);
[System.Environment]::GetEnvironmentVariable('Path',[System.EnvironmentVariableTarget]::Machine);
[System.Environment]::GetEnvironmentVariable('Path',[System.EnvironmentVariableTarget]::User);

Upvotes: 6

Related Questions