node.js - EnvironmentVariableTarget.Process 在进程结束后继续存在
问题描述
我需要设置一个环境变量,一旦它的进程结束,它就会自动清除。process env 类型似乎是一个候选者。
但是,如果我在这样的 ps1 脚本中设置环境变量
[环境]::SetEnvironmentVariable($key, $value, "Process")
并且脚本终止,名称为 $key 的变量在我仍然可见时
ls 环境:\
我已经尝试在 finally 块中删除环境,但它似乎没有被触发。
我的用例是将环境变量传递给 node.js 进程。我不想使用通常推荐的 .env 文件,因为这意味着将机密保存在磁盘上。
这是我的代码
param(
[string]$service='serviceName',
[int]$prod=0
)
try {
function getSecret {
param([string]$secretName)
$secret = (az keyvault secret show -n $secretName --vault-name "VAULT-NAME") | ConvertFrom-Json
return $secret.value
}
function setEnv {
param([string]$key, [string]$value)
[Environment]::SetEnvironmentVariable($key, $value, "Process")
}
setEnv -key NAME_1 -value (getSecret -secretName "VALUE_1")
setEnv -key NAME_2 -value (getSecret -secretName "VALUE_2")
setEnv -key NAME_3 -value "VALUE_3"
set-location $PSScriptRoot
npm run dev
}
catch {}
finally {
Remove-Item Env:\NAME_*
}
解决方案
我认为您应该使用与创建环境变量相同的方法来删除环境变量,方法是指定环境的目标,在这种情况下"Process"
。
这样做的方法是:
[Environment]::SetEnvironmentVariable("NAME_1", $null, "Process")
[Environment]::SetEnvironmentVariable("NAME_2", $null, "Process")
[Environment]::SetEnvironmentVariable("NAME_3", $null, "Process")
请参阅Environment.SetEnvironmentVariable 方法
希望有帮助
推荐阅读
- parsing - 无法为非 LR 语法找到 first() 和 follow()
- c# - 如何从 Azure Web App 本地存储中删除文件?
- geometry - 圆圈进度默认为 85,但输出显示 0
- python-3.x - 当我的代码需要提示输入并提供正确或不正确的百分比时,它返回一个空白值
- c# - TIFF 如何有序地放置图像
- python - 使用谷歌模块地图时的语法错误
- java - 无法在 Java Swing 中应用组合而不是继承
- python - 在共享云端硬盘中上传文件
- java - 为什么 Java Kafka Consumer 返回空记录列表?
- powershell - 如何仅将 Office 组的所有者添加到 SharePoint 组?