7

次のコマンドを使用してsetup_server.exe、リモートの Windows ボックスで実行します。

powershell -command "$encpass=convertto-securestring -asplaintext RPASSWORD -force;$cred = New-Object System.Management.Automation.PSCredential -ArgumentList RUSER,$encpass; invoke-command -computername RCOMPUTERNAME -scriptblock {setup_server.exe} -credential $cred;"

setup_server.exeのタスクは、いくつかの構成ファイルを作成して開始しmy_server.exe(いくつかのデーモンプロセス)、終了することです。そして完成my_server.exe後も走り続けたい。setup_server.exe

したがって、ローカルボックスでCMDを介して実行すると(つまりsetup_server.exe、CMDから実行するだけで)動作しますが、リモートホストでpowershellを介して実行すると動作しません。つまり、が開始されますが、サーバーが閉じられmy_server.exeた直後にサーバーも閉じられます (強制終了されます)。setup_server.exe

質問は次のとおりです。説明されているシナリオをローカル モードで動作させるには、どの PowerShell フラグ/コマンドレットを使用する必要がありますか?

注: の出力を同期的に取得したいsetup_server.exeので、フラグを指定してリモート コマンドを実行して-AsJobもおそらくうまくいかないでしょうsetup_server.exe

4

5 に答える 5

2

Invoke-Command を使用している理由。永続的なセッションが必要な場合は、Enter-PSSession を使用します。

$s = New-PSSession -Computername "Computername";
Enter-PSSession -Session $s;

setup_server.exe

# Once you are finnished
Exit-PSSession

「Enter-PSSession」を使用すると、サーバーでコマンドを呼び出すだけでなく、おそらく SSH から知っているように、直接ログインできます。

于 2013-07-19T10:35:52.580 に答える
1

exe を実行しているために Powershell セッションを実行し続けたい場合は、-InDisconnectedSession スイッチを使用してみてください。私が理解していることから、実際にはコンピューターに接続されていないセッションで、リモート マシン上で実行可能ファイルが実行されます。本質的に、コンピューターはセッションが切断されてもセッションを破棄せず、exe を実行し続けることができます。

呼び出しコマンド -computername RCOMPUTERNAME -scriptblock {start-process setup_server.exe} -InDisconnectedSession

複数のコンピューターでこれを行う必要がある場合。すべてのコンピューター名の配列をセットアップします。

注: これが既に作成されたセッションで機能するとは思えません。

于 2013-07-29T21:26:31.503 に答える