PM2命令未在PowerShell脚本下运行

时间:2018-07-10 01:57:32

标签: node.js powershell amazon-ec2 pm2

我在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

1 个答案:

答案 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-因为这将创建一个新会话,该会话将接收到新的环境变量