Hallo Ich habe dies nicht speziell mit PowerShell versucht, aber ich habe es mit Batch-Dateien und Windows Shell Host versucht. Eine Alternative zur Verwendung von RMI ist die Verwendung der von Windows bereitgestellten Remoting-Funktionen DCOM. Auf diese Weise müssen Sie keinen zusätzlichen Remote-Dienst auf dem Windows-Computer bereitstellen. Stattdessen können Sie den DCOM-Server verwenden, der von jedem Windows-Computer bereitgestellt wird. Der Windows-Computer macht etwas bekannt, das Windows Shell-Host genannt wird. Dieser Windows-Shell-Host kann zur Remote-Ausführung von Skripten verwendet werden. Da fast alles in Windows in Form von COM-Objekten zur Verfügung steht, ist es meine Erwartung, dass Powershell auch als ein registrierter COM-Dienst kommt, den Sie gerade herausfinden müssen.
In diesem Link eine Lösung für Ihr Problem mit Windows Shell Host und J-Interop als Java-Implementierung des DCOM-Protokoll finden: How to call a remote bat file using jinterop
/ 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")});
Wenn Sie die Ausgabe aus dem Ansatz müssen Sie kann StdOut verwenden, um es zu lesen.
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());
}
prüfen Sie diesen Link: https://social.technet.microsoft.com/Forums/office/en-US/d32537bd-0aef-440e- 8760-6b3085390c37/executing-powershell-script-via-java? Forum = winserverpowershell Am Ende von diesem gibt es ein funktionierendes Beispiel einschließlich Fehlerbehandlung. – Martin
Danke, aber es ist nicht genug, ich muss mich einloggen und Remote Script ausführen; Zum Beispiel werde ich Code auf meinem Ubuntu ausführen -> Verbindung zu Windows Maschine -> Skript auf diesem Rechner ausführen -> Ergebnis der Ausführung zurück zu bekommen. Obwohl, danke – GVArt
Möglicherweise verwandt: https://serverfault.com/questions/638659/managing-windows-powershell-from-linux-terminal –