如何使用jinterop调用远程bat文件

时间:2011-07-21 19:06:59

标签: batch-file dcom j-interop

GlassFish Application Server使用一个脚本asadmin.bat来反过来启动一个JVM。

我想在远程计算机上使用Java中的jinterop和DCOM来调用此脚本。我找不到任何有关此特定用法的帮助。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

我使用Windows Scripting Host Shell在远程计算机上执行某些程序或批处理。

代码如下:

// Create a session
JISession session = JISession.createSession(<domain>, <user>, <password>);
session.useSessionSecurity(true);

// Execute command
JIComServer comStub = new JIComServer(JIProgId.valueOf("WScript.Shell"),<IP>, session);
IJIComObject unknown = comStub.createInstance();
final IJIDispatch shell =     (IJIDispatch)JIObjectFactory.narrowObject((IJIComObject)unknown.queryInterface(IJIDispatch.I ID));
JIVariant results[] = shell.callMethodA("Exec", new Object[]{new JIString("%comspec% /c asadmin.bat" )});

如果您需要批处理的输出,可以使用StdOut来读取它。

JIVariant stdOutJIVariant = wbemObjectSet_dispatch.get("StdOut"); 
IJIDispatch stdOut =  (IJIDispatch)JIObjectFactory.narrowObject(stdOutJIVariant.getObjectAsComObject());

// Read all from stdOut
while(!((JIVariant)stdOut.get("AtEndOfStream")).getObjectAsBoolean()){ 
    System.out.println(stdOut.callMethodA("ReadAll").getObjectAsString().getString()); 
}