我可以创造一个
用户环境变量
在
powershell脚本
(Windows 10)很容易。
[System.Environment]::SetEnvironmentVariable('name', 'value', 'User')
当变量应该
包含另一个用户环境变量
喜欢
%OTHERVAR%;static_part
,我发现类型必须是
ExpandString
. 这可以按如下方式进行
Set-ItemProperty HKCU:\Environment 'name' 'value' -Type ExpandString
所以,我写了下面的代码
[System.Environment]::SetEnvironmentVariable('M2_HOME', 'C:\dev\app\apache-maven-3.3.9', 'User')
# special treatment to get expandable type
Set-ItemProperty HKCU:\Environment 'PATH' '%M2_HOME%\bin;C:\Users\UID20852\AppData\Local\Microsoft\WindowsApps;' -Type ExpandString
Write-Host ([System.Environment]::GetEnvironmentVariable('M2_HOME', 'User'))
Write-Host ([System.Environment]::GetEnvironmentVariable('PATH', 'User'))
Write-Host
输出:
C:\dev\app\apache-maven-3.3.9
C:\dev\app\apache-maven-3.3.9\bin;C:\Users\UID20852\AppData\Local\Microsoft\WindowsApps;
一切看起来都很好,两个变量都存在。当我打开windows控件来编辑用户环境变量时,我看到两个变量,path的值被展开。即使在
regedit
我知道变量的类型是正确的。
但是,当我
打开一个新的
cmd
并尝试从
%M2_HOME%\bin
(应该在
PATH
现在),它
失败
.
要手动解决此问题,只需打开windows控件编辑用户环境变量,双击
路径
变量,
不编辑任何内容
,然后再关闭它(我想它会重新写入)。
然后,在一个新的
CMD
,然后我可以从
%M2 U HOME%\bin住宅
.
你知道我怎么做吗
路径
变量只通过脚本工作?