Batchdatei vom Client auf Server ausführen. Probleme bei Übergabeparametern mit psexec

Hallo,

Folgende Situation:

Ich habe einen Server an dem ich eine Steckdosenleiste betreibe, welche man über USB schalten kann. Hiermit starte ich externe Festplatten auf dem Server um die darauf befindlichen Mediendaten auf meine Clients (HTPCs) zu streamen. Die Steckdose wird dabei mit dem Programm „Power Manager“ über USB angesprochen. Man kann dabei das Programm auch über eine Befehlzeile im Batch mit einigen Parametern ansprechen.

Bsp: „C:\Program Files\Power Manager\pm.exe“ -on -Device1 -1" (Dies schaltet die erste Dose (-1) auf der ersten (und einzigen) Dosenleiste (-Devise1) auf AN)

Ich starte die Batchdatei über einen generierten Button in XBMC und kann somit aus meinem Mediacenter heraus diverse Datenquellen zu- oder abschalten.

Dies funktioniert auf dem Server auch problemlos.

Jetzt möchte ich jedoch von meinen Clients (HTPCs) z.B. vom Wohnzimmer aus die Datenplatten auf dem Server anschalten, was ja nur über irgendwelche Remotebefehle im Netzwerk funktioniert, weil die Batch ja nicht auf dem Client sondern direkt auf dem Server laufen muß.

Ich wollte dies über psexec wie folgt realisieren:

psexec \server „C:\Program Files\Power Manager\pm.exe“ -on -Device1 -1

bzw. über das Starten der Batchdatei mit selbem Inhalt

psexec \server „C:\batch.exe“

Obwohl die Batchdatei ausgeführt wird (sieht man im CMD), schalten die Parameter in der Befehlszeile nicht den Power Manager und somit auch nicht die Dose an.

Ferner habe ich das Problem, dass psexec bei jedem Aufruf „psexesvc“ auf dem Server installiert und wieder löscht. Somit würde es auch recht lange dauern die Dosen zu schalten, selbst wenn es funktionieren würde.

Also, ich möchte vom Client aus eine Software auf dem Server ausführen, welche eine Steckerleiste schaltet um Datenplatten anzuschalten. Gibt es dafür vielleicht eine andere (einfachere?) Möglichkeit ohne o.a. Probleme?

Danke für Eure Hilfe!

lg
Mario

über folgende Batchdatei (batch.exe) meine EG-PM2 über Power Manager schalte um externe Festplatten zu starten:

„„C:\Program Files\Power Manager\pm.exe“ -on -Device1 -1“

Nun wollte ich diese Batchdatei über einen Client auf dem Server ausführen um die Festplatten zu aktivieren und die Inhalte zu streamen. Ich wollte dies über psexec wie folgt realisieren:

psexec \server „C:\Program Files\Power Manager\pm.exe“ -on -Device1 -1

bzw. über

psexec \server „C:\batch.exe“

Leider funktioniert dies nicht und ich bekomme im cmd die Meldung „pm.exe exited with Error code 0“

 

Wie kann ich am Besten den PM auf meinem Server über einen Client ansprechen?

Hi Honko,

welches Betriebssystem läuft auf dem Server?

Aber eigentlich ist es egal. An sich machst Du alles richtig … also würde ich serverseitig nach Problemen fahnden.

Meistens kann ich die mit dem Process Monitor von Sysinternals ganz gut festpinnen.

Den Process Monitor startest Du auf dem Server und trainierst ihn über einen Filter, pm.exe zu bewachen, und schaust was passiert, wenn es von Dir lokal und wenn es per Batch von Remote aus angeschubst wird.

Standards sind: fehlende Berechtigungen, oder nicht gefundene Dateien wegen nicht passendem Standardverzeichnis, oder weil das Programm unter psexec nicht mit dem gleichen Account läuft mit dem es installiert wurde.

Auch eine nicht ganz unnütze Idee wäre, die Bildschirmausgabe und den Errorlevel von PM zu untersuchen, eventuell enthält eins davon einen Hinweis, allerdings sind moderne Programmierer oft zu faul, bei Fehlerabbrüchen Errorlevels zus etzen und diese dann auch zu dokumenteiren – einen Versuch ist es trotzdem wert. Man schreibt Bildschirmausgabe und Errorlevel einfach per Pipe auf eine Datei:

set logfile="%temp%\pm.log"
echo Starte PM: %Date% %Time% \>%logfile%
echo Starte in: %CD% \>\>%logfile%
echo. \>\>%logfile%
pm ........................... \>\>%logfile%
echo. \>\>%logfile%
echo Errorlevel: %errorlevel% \>\>%logfile%

Ich würde allerdings den Process Monitor vorziehen, es ist nicht gesagt, dass das PM Programm eine Konsolenausgabe macht, und einen Errorleve setzt.
Irgendwo wirst Du was finden, und dann läuft das was Du willst so wie Du es wolltest.

Gruss Armin.

Ahoi Honko,
versuch evtl. mal statt

psexec \\server "C:\Program Files\Power Manager\pm.exe" -on -Device1 -1

dieses:

psexec \\server -u benutzer -p kennwort "C:\Program Files\Power Manager\pm.exe" -on -Device1 -1

„benutzer“ ist dabei der Name des Benutzers auf dem Server.

Eine weitere Option könnte folgendes sein:

wmic /node:server /user:benutzer /password:kennwort process call create
"C:\Program Files\Power Manager\pm.exe" -on -Device1 -1"