如何从PowerShell将AWS密钥环境变量传入原生JavaScript?
解决方法
因为你用的是原生JavaScript执行环境(不是Node.js),所以不存在process对象,给你两个内存级的可行传递方案:
方案1:通过命令行参数传递
修改PowerShell的运行命令,把环境变量作为参数传给脚本:
& '\path\to\ScriptRunner.exe' '\path\to\CognosGroupsExtract.js' $env.aws_password
然后在JS脚本里读取命令行参数(具体要看ScriptRunner的参数暴露规则,这类工具通常会把脚本路径后的参数放到全局arguments数组或args数组里):
// 测试确认索引:如果脚本路径是第0个参数,密码就是第1个;如果额外参数从0开始计数,就取args[0] var password = arguments[1]; // 或者用args数组:var password = args[0]; server.logon("username", password);
方案2:直接在JS里读取系统环境变量
如果ScriptRunner支持ActiveX(Windows环境下这类工具基本都支持),可以通过WScript.Shell读取当前进程的环境变量(子进程会继承父进程PowerShell的环境变量):
var shell = new ActiveXObject("WScript.Shell"); // PROCESS表示读取当前进程的环境变量集合 var password = shell.Environment("PROCESS").Item("aws_password"); server.logon("username", password);
这种方式不用修改PowerShell的运行命令,全程内存传递,不会把密码写到文件里。
内容的提问来源于stack exchange,提问作者Tinytan
相关产品推荐
相关产品推荐

