2014-03-14 93 views
2

我必須在集羣上執行命令來殺死一組進程。批量啓動winrs重定向輸出

start /wait winrs -r:NODENAME -u:USERNAME -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f 

我無法重定向輸出。我發現在這個網站類似的問題,但這裏的解決方案:

Is there any way to redirect stderr output from a command run with "start" in the Windows command line?

不起作用。我重定向winrs命令,但我需要taskkill的重定向。 有什麼想法? 謝謝。

回答

0

這完全沒有經過測試,我對於winrs一無所知。但我相信這只是一個逃避重定向適當次數的問題。假設n是逃逸次數,則所需的插入符號數爲2到第n次方,減1((2^n)-1)。

如果你想輸出重定向到遠程機器上的文件,然後重定向必須被延遲,直到WINRS啓動遠程過程,所以兩次,一次用於啓動,另一次WINRS

start /wait winrs -r:NODENAME -u:USERNAME -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f ^^^>output.txt 

我能想到的唯一的其他變體是顯式啓動cmd.exe進程來處理重定向,再次使用轉義重定向。在這種情況下,我認爲你需要三個逃逸:

start /wait winrs -r:NODENAME -u:USERNAME -p:PASSWORD cmd /c taskkill /FI \"USERNAME eq USER" /f ^^^^^^^>output.txt 

如果你想重定向到一個文件在本地機器上的輸出,那麼你需要重定向WINRS的輸出(假設WINRS顯示遠程執行的輸出處理)。所以只需要一次逃生。

start /wait winrs -r:NODENAME -u:USERNAME -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f ^>output.txt 

我很驚訝你需要通過START啓動WINRS。我本以爲你可以直接執行命令,因爲你打算等待它完成。如果直接啓動,並且希望將輸出收集到本地文件中,那麼我認爲您不需要任何轉義。

winrs -r:NODENAME -u:USERNAME -p:PASSWORD taskkill /FI \"USERNAME eq USER" /f >output.txt 

我很感激評論,如果有的話,如果有的話,我的建議工作。

+0

編輯 - 主要重寫的答案 – dbenham

+0

我仍然試圖讓它工作。 – user3419104

+0

我確認只有一個轉義解決方案^把日誌放在遠程機器上,我試圖恢復文件。你認爲在控制檯輸出上有重定向的方法嗎?非常感謝 – user3419104