簡體   English   中英

如何在不使用完整路徑的情況下遠程永久執行命令?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM