[英]How to execute forever command remotely without using full path?
我正在嘗試使用Powershell遠程執行“永遠”命令,但出現錯誤
“永遠”不被識別為內部或外部命令
這是我在做什么。 我有執行永久命令的節點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“ forever -p ./logs --sourceDir ../wf_manager --workingDir ../wf_manager開始-a --uid“ ServiceApp” ServiceApp.js“
+ CategoryInfo:未指定:(錯誤:失敗... ServiceApp.js“:String)[],RemoteException
+ FullyQualifiedErrorId:NativeCommandError
+ PSComputerName:MyWebServer1
“永遠”不被識別為內部或外部命令,可操作程序或批處理文件。
請注意,如果我更新“ MyNodeScript.js”並對forever命令使用完整的物理路徑,則可以遠程執行腳本而不會出現任何錯誤。
var mycommand = 'C:\\Users\\admin\\AppData\\Roaming\\npm\\forever -p ./logs --sourceDir ../wf_manager --workingDir ../wf_manager start -a --uid "ServiceApp" ServiceApp.js'
但是我只想使用永遠的命令。 該路徑已作為環境變量添加到MyWebServer1上
嘗試像這樣調用ps1-文件:
Invoke-Command -Scriptblock {powershell.exe -command {d:\blah\MyPowershellscript.ps1 } }
通過-filepath您可以指定應遠程執行的本地腳本文件。 由於您的腳本位於目標系統上,因此可以忽略該腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.