Powershell如何临时将路径添加到环境变量中?

62

我正在尝试编写一个简单的PowerShell脚本来部署一个Visual Studio ASPNET Core 1项目。

目前,在批处理文件中,我可以这样说:

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

那将在会话期间修改路径变量...但我始终无法弄清楚如何在PowerShell中完成这个简单的事情。

有人能帮我把它翻译成PowerShell吗?

TIA!


3
谢谢Simon,这是在谷歌搜索“powershell add to path temporarily”时的第一个结果! - xpt
2个回答

103

选项1:修改$env:Path变量

  1. 在当前窗口中将内容追加到Path变量:

    $env:Path += ";C:\New directory 1;C:\New directory 2"
    
  2. 在当前窗口中给Path变量添加前缀:

  3. $env:Path = "C:\New directory 1;C:\New directory 2;" + $env:Path
    
  4. 替换当前窗口中的Path变量(谨慎使用!):

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

选项2:使用editenv工具

我编写了一个名为editenv的Windows命令行工具,可以让您交互式地编辑环境变量的内容。它可以在Windows控制台中运行(特别要注意,它无法在PowerShell ISE中运行):

editenv Path

当你想以更加交互式的方式编辑和重新排列你的Path目录时,这将会非常有用,并且仅影响当前窗口。


8
如果您使用“+=”向现有路径添加内容,请确保在添加的路径之前添加一个分号。例如:$Env:Path += ";C:\New directory 1;C:\New directory 2" - samneric
1
我重新排列了我的答案中的信息,以避免混淆。 - Bill_Stewart
2
有时候,您希望先使用新的路径信息 - 在这种情况下,您无法使用 +=。 例如:$Env.Path = "C:\New Directory;" + $Env.Path - Jimbugs
感谢您对添加和前缀的建议 - 已更新答案。 - Bill_Stewart

6

您可以直接使用$env:Path,但如果您担心这不够明确,您可以使用System.Environment.SetEnvironmentVariable()

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

而GetEnvironmentVariable()可以明确地检索到:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接