2017-09-26 205 views
2

我有一個腳本,其中包含對winrs的調用,以便遠程啓動用戶指定目標機器上的.exe的執行。批處理腳本在winrs命令後停止執行

我想了以下功能:

  • 啓動腳本
  • 提示用戶爲目標計算機的名稱
  • winrs到目標電腦執行.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文件,但似乎那麼遠程shell在此之後,保持開放無所事事。

如果我在此時按ctrl + c「終止shell?(y/n)」被放置在我的日誌文件中(但在cmd提示符中沒有輸出),然後我可以按「y」遠程shell退出並在cmd提示符中出現「終止批處理作業(Y/N)」,但最後的echo語句從不執行。

如何讓遠程shell在運行.exe後自動關閉,並回顯某種確認腳本已經完成了誰執行它的提示?

所有幫助表示感謝!

回答

0

您正在使用call,它執行一個新的cmd.exe窗口並在該窗口中運行winrs並退出。 刪除它,它會工作。我在最後添加了暫停,以防您通過雙擊運行批處理。

關閉@echo

編輯

經過一番分析似乎批次正在等待程序完成,所以它有可能只是開始稱呼它應該叫它並返回到原始提示。

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

這具有完全相同的行爲。 我想調用只是確保腳本調用指定的命令後返回自己? 暫停是一個有用的提示,通過雙擊運行,雖然謝謝你! –

+0

@CiaranMcKenzie你正在執行什麼命令?它應該在指揮官跑完後退出。也許測試命令本身,所以用類似ping命令的東西替換命令。並看看它是否返回? –

+0

我想遠程運行.exe文件,只需將其路徑/名稱輸入到遠程cmd即可。 我在這裏有兩個電腦,所以當我運行你的代碼或我的代碼時,EXE在目標機器上遠程運行,因爲我可以看到相關服務已在該機器上啓動,並且日誌文件沒有錯誤。因此,實現了在目標背景中運行該.exe的實際最終目標。 就好像腳本停止了那樣,.exe已經在遠程機器上執行了,錯誤/成功被記錄到日誌文件中,然後我坐在那裏提示並且最後的回聲從不發生。 –

相關問題