我在AWS的Windows实例用户数据中具有以下命令。我可以看到设置了pm2 env变量,但是在PowerShell中的下一行中没有启动pm2服务器。我在系统配置文件下而不是任何用户配置文件下运行pm2。
请参见以下代码:
$myvar = "D:\Mycode"
[Environment]::SetEnvironmentVariable("PM2_HOME", "C:\etc\.pm2", "Machine")
& 'C:\Windows\system32\config\systemprofile\AppData\Roaming\npm\pm2.cmd' start $myvar"\app.js" |
Out-File D:\debug.txt -Append
答案 0 :(得分:0)
您对[Environment]::SetEnvironmentVariable(...)
的调用不会影响当前的shell环境变量,因此,当您调用PM2_HOME
时,pm2.cmd
变量将不存在。
一个简单的解决方法是在调用SetEnvironmentVariable
之后,使用以下命令检索该值,然后在当前shell中创建该变量:
$env:PM2_HOME = [System.Environment]::GetEnvironmentVariable("PM2_HOME","Machine");
这仅在userdata脚本中是必需的,因为将来的所有会话都将具有该环境变量(即,在会话开始时加载环境变量)。
一种替代方法是调用powershell.exe
(甚至是cmd.exe
)的新实例以启动pm2.cmd
-因为这将创建一个新会话,该会话将接收到新的环境变量