我需要从批处理文件设置环境变量。在 Linux 中,我可以使用以下命令:
source key.sh
我如何在 PowerShell 中执行此操作?当我运行 时key.bat
,它给出了一个错误。我运行.\key.bat
并设置了变量,但当我运行 时它没有显示$env:KEY
。
答案1
如果您有可用的 powershell,只需在 powershell 中调用 .net 即可根据您的需要设置环境。
[System.Environment]::SetEnvironmentVariable($Name, $Value, [System.EnvironmentVariableTarget]::Machine)
//[System.EnvironmentVariableTarget]::Machine
//[System.EnvironmentVariableTarget]::User
//[System.EnvironmentVariableTarget]::Process
参见 SetEnvironmentVariable 文档:
https://docs.microsoft.com/en-us/dotnet/api/system.environment.setenvironmentvariable?view=net-6.0
如果需要修改批处理下的用户环境,我会更改注册表。
参见 reg add 文档:
https://docs.microsoft.com/de-de/windows-server/administration/windows-commands/reg-add
reg add HKEY_CURRENT_USER\Environment /v "TestTemp" /t REG_EXPAND_SZ /d "C:\temp"
请注意,被调用的进程是父进程的子进程而不是单独的进程,因为如果进程调用链中断,所有进程环境变量都会丢失。
顺便说一下,powershell 中源命令的替换是不同的问题。
source key.sh
将会
. "key.ps1"
在 PowerShell 中。