执行psexec并输出到localhost上的文件

时间:2014-08-29 09:56:07

标签: java command-line groovy processbuilder psexec

我遇到了从java运行的psexec的问题,以下是我的测试脚本:

def cmd = 'psexec.exe \\\\IP_ADRESS -accepteula -u "user_name" -p "passwd" net start MyService > C:/output.txt 2>&1'
def proc = cmd.execute()
proc.waitFor();

如您所知,我希望从远程计算机启动MyService,并在C:/output中将stdout输出到本地计算机 运行脚本后,没有文件输出,脚本控制台上没有显示任何内容

我试着用谷歌搜索但没有运气:(

当然,我可以从命令行运行命令行

psexec.exe \\IP_ADRESS -accepteula -u "user_name" -p "passwd" net start MyService > C:/output.txt 2>&1

那么,我的剧本是怎么回事?

我有另一个问题

从命令行运行此命令时

psexec.exe \\IP_ADRESS -accepteula -u "user_name" -p "passwd" net start MyService > C:/output.txt 2>&1`

我在C:/output.txt输出

PsExec v1.98 - Execute processes remotely
Copyright (C) 2001-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
The MyService started.
Connecting to 10.0.0.2...
Starting PsExec service on 10.0.0.2...
Connecting with PsExec service on 10.0.0.2...
Starting net on 10.0.0.2...
net exited on 10.0.0.2 with error code 0.

我只希望将此字符串The MyService started.输出到文件,而不是来自PSEXEC

的消息

我怎么能这样做?,任何非法的版权?请帮帮我

非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我不知道windows,但stdout / err的重定向,就像你在那里刨,可能是一个shell功能。如果您只对结果输出感兴趣(而不是文件本身),则可以访问proc变量上的stdin / out。

来自http://groovy.codehaus.org/Executing+External+Processes+From+Groovy

def command = """executable arg1 arg2 arg3"""// Create the String
def proc = command.execute()                 // Call *execute* on the string
proc.waitFor()                               // Wait for the command to finish
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}" // *out* from the external program is *in* for groovy

还要确保检查错误代码和stderr是否存在实际错误。如果有疑问,请考虑运行'cmd arg1 arg2'.execute()而不是['cmd','arg1','arg2'].execute(),如果你的申请有挑剔。

答案 1 :(得分:1)

我和java和psexec有同样的问题。我没有从java中获得psexec的输出。我在gradle论坛上找到了使用paexec的替代方法:

http://forums.gradle.org/gradle/topics/exec_starting_remote_process_with_psexec_does_not_return_on_windows

paexec与psexec非常相似,并且具有一些附加功能。看起来另一个增加的功能是能够在java中获得输出。

相关问题