2017-09-26 21 views
2

ユーザー指定のターゲットマシン上で.exeの実行をリモートから開始するためにwinrsを呼び出すスクリプトがあります。winrsコマンドの後でバッチスクリプトの実行が停止する

は、私は、次の機能が必要:

  • 起動スクリプト
  • winrsターゲットPCへのターゲットPCの名前の
  • プロンプトユーザー.exeファイルを実行すると、これがされていることを、スクリプトを実行したユーザーに伝えます完了しました。
  • winrsの実行を停止し、終了したスクリプトを実行したユーザーに通知します。
  • 終了。
  • スクリプトが実行されたマシン上のすべての出力が必要で、ターゲットマシンで何も表示されないようにします。次のよう

私が持っているコードは次のとおりです。

@echo off 

echo ------------------------------------------------------- 
echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE 
echo ------------------------------------------------------- 
SET /p pcToReconnect= 
echo Attempting to contact Agent. 

call winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1 

echo Agent reconnected. Please allow ~5mins for your management console to update. 

winrsを呼び出すまでのコードが実行されると、それはInfactは、ターゲットマシン上の.exeファイルを実行しないが、それは、その後思われるリモートシェルこの後は何もしないまま開いたままです。

この時点で「シェルを終了しますか?(y/n)」はログファイルに入れられますが(cmdプロンプトでは出力されません)、「y」を押して入力すると、リモートシェルが終了し、cmd.exeプロンプトに「Terminate batch job(Y/N)」と表示されますが、最後のecho文は実行されません。

.exeが実行された後、自動的にリモートシェルを閉じるようにするにはどうしたらいいですか?実行した人のプロンプトでスクリプトが完了したことを確認してください。

すべてのお役に立ちました!

答えて

0

callを使用しています。新しいcmd.exeウィンドウを実行し、その新しいウィンドウでwinrsを実行して終了します。 削除すると正常に機能します。ダブルクリックしてバッチを実行している場合は、最後に一時停止を追加しました。

@echoオフ

EDIT

いくつかの分析の後、プログラムが終了するのをバッチが待っているようですので、それを呼び出すべき開始でそれを呼び出すことも可能であろう元のプロンプトに戻ります。

start winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1 
+0

これはまったく同じ動作でした。 私はコールが、指定されたコマンドを呼び出した後にスクリプトが自分自身に戻ったことを確認したと思いましたか? 一時停止は、ありがとうございますがダブルクリックで実行すると便利です。 –

+0

@CiaranMcKenzieどのコマンドを実行していますか?それは、コマンドが実行された後で終了することになっています。コマンド自体をテストするかもしれないので、コマンドをpingコマンドのようなものに置き換えてください。それが返されるかどうかを確認します。 –

+0

リモートのcmdにパス/名前を入力するだけで、.exeファイルをリモートで実行したいです。 私はここに2つのPCを持っているので、あなたのコードまたは私のコードを実行すると、。exeはターゲットマシン上でリモート実行されます。関連するサービスがそのマシンで開始されていることがわかります。ログファイルにはエラーがありません。したがって、ターゲットのバックグラウンドでその.exeを実行する実際の最終目標が達成されます。 スクリプトが停止した場合、リモートマシン上で.exeが実行され、エラー/成功がログファイルに記録され、その後プロンプトが表示され、最後のエコーは起こりません。 –

関連する問題