2

我必须在集群上执行命令来杀死一组进程。

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

我无法重定向输出。我在这个网站上发现了类似的问题,但这里的解决方案:

有没有办法从 Windows 命令行中使用“start”运行的命令重定向 stderr 输出?

不起作用。我重定向 winrs 命令,但我需要 taskkill 的重定向。任何想法?谢谢。

4

1 回答 1

0

这是完全未经测试的,我对胜利者一无所知。但我相信这只是逃避重定向正确次数的问题。假设 n 是转义数,则所需的脱字符数是 2 的 n 次方,减 1 ((2^n)-1)。

如果要将输出重定向到远程计算机上的文件,则必须延迟重定向,直到 WINRS 启动远程进程,所以两次,一次用于 START,一次用于 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

如果有的话,我将不胜感激我的建议是否有效。

于 2014-03-14T11:41:07.820 回答