37414
Goto Top

Aufruf einer Batch-Datei auf einem anderem PC im Netzwerk, die eine EXE-Datei auf einem Netzlaufwerk startet

Hallo - ich schon wieder face-smile

Nachdem ich mit Euren gestrigen Tipps einen super Erfolg hatte, bitte ich Euch nochmal um Hilfe.

Es geht wieder um ein Programm-Update.

Diesmal befindet sich die Update-Datei (Update.exe) auf einem Serverlaufwerk und muss von jedem Client aus gestartet werden, damit der jeweilige Client upgedatet wird.

Ich möchte nun eine Batch-Datei schreiben, die das von meinem Arbeitsplatz aus oder vom Server aus automatisiert.

Also... jeder einzelne Client muss die Datei "S:\OH\Update\Update.exe" starten.

Es handelt sich um etwa 15 PCs, die so upgedatet werden müssen und alle befinden sich im Netzwerk in der gleichen Domaine.

--> Ich vermute, dass ich eine Batch-Datei haben müßte, die auf jedem Client wiederum eine Batch-Datei startet. Und diese enthält
dann den Start der o.g. Update.exe

Habt Ihr Tipps, wie beide Batch-Dateien aussehen müßten?

Vielen Dank schonmal & Grüsse,
Ingo

Content-ID: 43146

Url: https://administrator.de/forum/aufruf-einer-batch-datei-auf-einem-anderem-pc-im-netzwerk-die-eine-exe-datei-auf-einem-netzlaufwerk-startet-43146.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

bastla
bastla 27.10.2006 um 11:14:23 Uhr
Goto Top
Hallo Ingo!

Schau Dir doch einmal PsExec an - insbesondere auch die Option "@file" zum bequemen Festlegen der Zielrechner.

HTH
bastla
37414
37414 27.10.2006 um 12:10:06 Uhr
Goto Top
Danke bastla,

bin nur nicht so fit in englisch face-sad

Ich denke mal, dass es gar nicht so problematisch sein dürfte, eine Datei zu starten, die auf einem anderen PC im Netzwerk liegt.

Leider startet mein Versuch nicht diese Datei auf dem anderen PC sondern auf meinem eigenen.

Gruss
Ingo
bastla
bastla 27.10.2006 um 13:58:12 Uhr
Goto Top
Hallo Ingo!

Mit PsExec müsstest Du etwa folgende Befehlszeile verwenden:

psexec \\Zielrechner -u test\Administrator -d -n 5 \\UpdateServer\UpdateFreigabe\OH\Update\Update.exe

bzw für alle in der Datei "Clients.txt" gespeicherten Rechner

psexec @Clients.txt -u test\Administrator -d -n 5 \\UpdateServer\UpdateFreigabe\OH\Update\Update.exe

Anmerkungen:
Die obigen Befehlszeilen gehen von einem Server "UpdateServer" mit passender Freigabe "UpdateFreigabe" aus - in Deiner Pfadangabe wäre analog dazu S: auf "\\UpdateServer\UpdateFreigabe" gemapped, was aber beim Remote-Zugriff vermutlich nicht gewährleistet wäre.

Gestartet wird das Update (auf dem Zielrechner) unter dem Benutzeraccount des Administrators der Domäne "test.local" ("-u test\Administrator"); das Passwort wird beim Ausführen von psexec abgefragt.

Die Angabe von "-d -n 5" beschleunigt den Ablauf, da bei nicht erreichbarem Zielrechner nur 5 Sekunden gewartet und bei erreichbarem Zielrechner nur das Update gestartet, aber nicht dessen Abschluss abgewartet wird.

Zu überlegen wäre noch, wie sich der Erfolg des Updates kontrollieren lässt.

Natürlich ließe sich das Ganze auch über lokale Batchdateien auf den Clients lösen - die entsprechenden Überlegungen dazu hat gestern bereits Biber im anderen Thread angemerkt.

Falls das mehrfache Updaten mit der selben Version unproblematisch ist, kannst Du einfach in das StartUp-Script der Clients folgende Zeile aufnehmen:

if exist \\UpdateServer\UpdateFreigabe\OH\Update\Update.exe \\UpdateServer\UpdateFreigabe\OH\Update\Update.exe

Soll ein neues Update freigegeben werden, hinterlegst Du die "Update.exe" wie gehabt im entsprechenden Ordner des Servers. Sobald Du davon ausgehen kannst, dass alle Rechner das Update erhalten haben, kannst Du die "Update.exe" wieder aus diesem Ordner löschen (oder auch nur umbenennen), sodass das neuerliche Installieren wegen der Existenzprüfung ("if exist") unterbleibt.

So wie oben müsstest Du auch bei dieser Variante den UNC-Pfad statt eines Laufwerkmappings verwenden (wozu ich ohnehin generell raten würde).

HTH
bastla
37414
37414 27.10.2006 um 14:22:38 Uhr
Goto Top
Hi Bastla,

danke für den ausführlichen Tipp... schaut sich recht gut an! DANKE!

Werde wohl die zweite Möglichkeit testen. Mir wäre aber eine manuelle Lösung sicherer.

Aber ein Problem besteht noch:

Ich habe es nicht geschafft, die Batch-Datei auf einem Client zu starten. Seltsamer Weise wurde der Inhalt der Batch-Datei (also der Start eines Programms) dann auf meinem Rechner ausgeführt.

Ich würde Deinen Vorschlag "if exist \\UpdateServer..............." gerne in eine Batch-Datei nehmen und diese auf jedem Client in ein Verzeichnis (zB. C:\OH) ablegen.
Diese Datei möchte ich dann vom Server aus auf jedem Client starten - wiederum über eine Batch-Datei.

Das wäre die in meinem Fall ideale Lösung.

Danke nochmals.
Ingo
bastla
bastla 27.10.2006 um 14:53:36 Uhr
Goto Top
Hallo Ingo!

Genau dieses "ferngesteuerte" manuelle Starten erreichst Du mit PsExec - auf Wunsch natürlich auch über den Zwischenschritt (oder besser Umweg) "lokale Batch-Datei".

HTH
bastla
37414
37414 27.10.2006 um 15:23:37 Uhr
Goto Top
OK bastla,

habe PsExec runtergeladen und alles so in eine Batch-Datei geschrieben:

"psexec \\das08 -u das\Administrator -d -n 5 \\Server\das\Antrag\Update\update.exe"

Jetzt erhalte ich aber die Meldung, dass der Befehl "psexec" entweder falsch geschrieben wurde oder nicht gefunden wurde...

Was mache ich noch falsch?

Ingo
bastla
bastla 27.10.2006 um 15:30:50 Uhr
Goto Top
Hallo Ingo!

Am einfachsten die psexec.exe in den Ordner C:\Windows\System32 legen, damit sie immer ohne Pfadangabe verwendet werden kann; ansonsten Aufruf mit vollständigem Pfad, zB

C:\PsTools\psexec \\das08 ....

Grüße
bastla
37414
37414 27.10.2006 um 15:51:15 Uhr
Goto Top
Tja - scheint nicht so einfach zu sein.

Im Prinzip klappt es.... aber auf dem entfernten PC (das08) tut sich nichts, obwohl die Meldung im CMS-Fenster auf meinem PC aussagt, dass alles funktioniert hat.

Bei mir steht also im DOS-Fenster (cms):

"\\das08\Update\Updatee.exe startet on das08 with process ID 1204"

Schaue ich dann auf dem das08-PC nach, ist dort nichts geschehen... es müßte sich ein Fenster geöffnet haben.

Hmmm.... mach wohl doch besser Wochenende face-sad

Gruss
Ingo
bastla
bastla 27.10.2006 um 15:58:44 Uhr
Goto Top
Hallo Ingo!

Hat die "Update.exe" keinen Schalter "/silent" oder ähnlich für eine "unbeaufsichtigte" Installation?

Du könntest den psexec-Aufruf noch durch ein "-i" ergänzen (vor "-d").

Grüße
bastla
37414
37414 27.10.2006 um 16:03:36 Uhr
Goto Top
OK - versuche es mal mit dem -i vor -d

Nein - einen solchen Schalter hat die Datei nicht. Habe auch schon eine andere Datei versucht.... eine, die einfach ein Programm startet... aber auch hier erhielt ich die gleiche Meldung, wie bei der Update.exe.

Teste jetzt nochmal Deinen letzten Tipp.

Danke.
Ingo
37414
37414 27.10.2006 um 16:07:52 Uhr
Goto Top
Leider das gleiche Ergebnis.

Meldung an meinem PC einwandfrei.... aber auf das08 öffnet sich kein Programm.

Werde am Montag nochmal weiter versuchen.
Dir ein schönes WE... und vielen Dank!!

Ingo
bastla
bastla 27.10.2006 um 16:11:44 Uhr
Goto Top
Hallo Ingo!

Noch eine Frage: Musst Du für das Update irgendwelche Eingaben tätigen (auch wenn nur ein "OK" anklicken)?

Schau Dir auch noch an, was ohne das "-d" passiert (dann müsste psexec auf das Ende der "Update.exe" warten).

Grüße
bastla
37414
37414 30.10.2006 um 08:51:33 Uhr
Goto Top
Hallo bastla,

war bei Deiner letzten Frage schon im Wochenende.

Ich denke, dass ich schon noch mind. eine Eingabe machen muss. Kann es jetzt leider nicht testen, da im Moment keine aktuelle Update.exe vorliegt.
Komisch ist halt eben, dass allem Anschein nach alles funktioniert (im CMD-Fenster läuft alles komplett durch), aber auf dem anderen PC (das08) tut sich nichts... das Programm öffnet sich nicht.

Vielleicht klappt das ja einfach so gar nicht (??)

Gruss
Ingo
bastla
bastla 30.10.2006 um 15:39:41 Uhr
Goto Top
Hallo Ingo!

Falls es tatsächlich erforderlich wäre, während des Update-Vorganges interaktiv Eingaben zu tätigen, würde eine Automatisierung ohnehin kaum funktionieren - allenfalls könntest Du Dir über RemoteDesktop (VNC) den Weg zu den Workstations sparen ...

Ansonsten könntest Du versuchen, Dir mit der Eingabe von
Update.exe /?
oder
Update.exe -?
eventuelle Befehlszeilenschalter anzeigen zu lassen und dadurch die Benutzereingaben zu ersetzen.

Vermutlich wird es aber am sinnvollsten sein, direkt den Hersteller auf die Problematik anzusprechen - und ihm gegebenen Falls nahe zu legen, die Updates (über die angesprochenen Befehlszeilenschalter) "scripting-fähig" zu machen.

Grüße
bastla