【发布时间】:2016-03-08 18:12:13
【问题描述】:
我正在尝试使用 powershell 远程执行“forever”命令,但出现错误
'forever' 未被识别为内部或外部命令
这就是我正在做的事情。我有执行永久命令的节点 js 脚本“MyNodeScript.js”。该脚本位于 WebServer "MyWebServer1" 上。 Node.Js 和 Forever 全局安装在 MyWebServer1 上。
var exec = require('child_process').exec;
var _ = require('underscore');
var winston = require('winston');
var async = require('async');
var mycommand = 'forever -p ./logs --sourceDir ../wf_manager --workingDir ../wf_manager start -a --uid "ServiceApp" ServiceApp.js'
function start(callback) {
async.waterfall([
function (cb) {
executeCommand(mycommand, false, cb);
}
], function done(err) {
if (err) {
winston.error('failed to start all instances by forever:' + err);
} else {
winston.info('successfully started all instances by forever');
}
callback();
});
}
function executeCommand(command, skip, callback) {
async.waterfall([
function (cb) {
exec(command, cb);
}
], function done(err) {
if (err) {
if (skip) {
// skip the error
callback(null);
} else {
callback(err);
}
} else {
callback(null);
}
});
}
module.exports = {
executeCommand: executeCommand,
start: start
}
start(function(){});
在同一文件夹下的同一 MyWebServer1 上,我有一个调用此节点脚本的 powershell 脚本“MyPowerShellScript.ps1”。 powershell脚本只有一行
node D:\myfolder\maintenance\MyNodeScript.js
我可以在 MyWebServer1 上本地运行这个 powershell 脚本,它工作正常。但是当我尝试如下执行这个powershell脚本时从远程机器
invoke-command -computername MyWebServer1 -filepath \\MyWebServer1\MyFolder\maintenance\MyPowerShellScript.ps1
我遇到了错误
错误:无法永远启动所有实例:错误:命令失败: C:\Windows\system32\cmd.exe /s /c "永远-p ./logs --sourceDir ../wf_manager --workingDir ../wf_manager start -a --uid "ServiceApp" ServiceApp.js"
+ CategoryInfo : NotSpecified: (error: failed t...ServiceApp.js":String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
+ PSComputerName : MyWebServer1
'forever' 不被识别为内部或外部命令、可运行程序或 批处理文件。
请注意,如果我更新“MyNodeScript.js”并为永久命令使用完整物理路径,我可以远程执行脚本而不会出现任何错误
var mycommand = 'C:\\Users\\admin\\AppData\\Roaming\\npm\\forever -p ./logs --sourceDir ../wf_manager --workingDir ../wf_manager start -a --uid "ServiceApp" ServiceApp.js'
但是我想使用 just forever 命令。该路径已作为环境变量添加到 MyWebServer1
【问题讨论】:
标签: node.js powershell forever