我想執行「永遠」遠程命令使用PowerShell,但我得到的錯誤如何遠程執行遠程命令而不使用完整路徑?
'forever' is not recognized as an internal or external command
下面是我在做什麼。我有執行永久命令的節點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
我收到錯誤
error: failed to start all instances by forever:Error: Command failed: C:\Windows\system32\cmd.exe /s /c "forever -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' is not recognized as an internal or external command, operable program or batch file.
請注意,我可以遠程執行該腳本沒有任何錯誤,如果我更新「 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'
但是我想用永遠的命令。路徑已經被添加作爲環境變量上MyWebServer1
我收到錯誤「powershell.exe:術語」節點「不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,驗證路徑是否正確,然後再試一次。「這裏是我試過的命令「Invoke-Command-Scriptblock {powershell.exe -command {\ MyWebServer1 \ MyFolder \ maintenance \ MyPowerShellScript.ps1}}」 – LP13
注意MyPowerShellScript.ps1在遠程機器上(即MyWebServer1)和\\ MyWebServer1 \ MyFolder \ i共享文件夾,以便其他機器可以訪問上述建議中的所有文件 – LP13
它如何知道哪個遠程機器MyPowershellscript.ps1存在?我們不得不添加 - 計算機名稱開關 – LP13