如何用jq提取Vault嵌套键值对并在PowerShell中设为环境变量
高效提取Vault KV数据并转换为环境变量格式
你不需要通过删除无关字段来获取目标数据,直接定位到data/data节点进行处理是更高效的方式,避免了遍历和删除冗余数据的开销。
核心命令
直接用jq定位目标数据并转换为key=value格式:
vault kv get kv/Env | jq -r '.data.data | to_entries | map("\(.key)=\(.value)") | .[]'
命令解释
.data.data:直接定位到存储键值对的目标节点,跳过所有无关层级to_entries:把对象转换为{"key": "...", "value": "..."}的数组格式,方便遍历处理map("\(.key)=\(.value)"):将每个键值对拼接成key=value的字符串-r:启用jq的原始输出模式,避免结果被额外引号包裹.[]:遍历数组,逐行输出每个字符串
PowerShell中设置环境变量
将上述命令的输出直接用于PowerShell设置环境变量:
vault kv get kv/Env | jq -r '.data.data | to_entries | map("\(.key)=\(.value)") | .[]' | ForEach-Object { # 按第一个等号分割,避免值里包含等号的情况 $key, $value = $_ -split '=', 2 # 设置当前进程的环境变量,若要持久化可修改第三个参数为'User'或'Machine' [Environment]::SetEnvironmentVariable($key, $value, 'Process') }
内容的提问来源于stack exchange,提问作者Shanthini
相关产品推荐
相关产品推荐

