首页 文章

PM2命令未在PowerShell脚本下运行

提问于
浏览
0

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

    您对 [Environment]::SetEnvironmentVariable(...) 的调用不会影响当前的shell环境变量,因此当您调用 pm2.cmd 时, PM2_HOME 变量将不存在 .

    一个简单的修复是在您调用 SetEnvironmentVariable 之后,使用以下命令然后检索该值,并在当前shell中创建该变量:

    $env:PM2_HOME = [System.Environment]::GetEnvironmentVariable("PM2_HOME","Machine");
    

    这仅在userdata脚本期间需要,因为所有将来的会话都将具有此环境变量(即,在会话启动时加载环境变量) .

    另一种方法是调用 powershell.exe (或甚至 cmd.exe )的新实例来启动 pm2.cmd - 因为这将创建一个新会话,它将接收新的环境变量 .

相关问题