winlin
Goto Top

Einfaches batch skript auf mehreren hosts ausführen

hallöchen leute,

bin batch newbie und hoffe auf einige tipps von euch.

Folgendes Szenario in einer W2k12R2 Umgebung:
- es gibt eine latte an server auf denen ein skript lokal mit adminrechten ausgeführt werden soll
- das skript und die sourcen liegen auf einem fileserver
- das batchfile sowie die sourcen sollen vom fileserver lokal auf die Platte eines jeden Servers kopiert werden
- liegt es dann mal lokal auf jeden server dann soll es einfach nur ausgeführt werden und ein reboot iniziiert werden - am besten mit logfile und datum

Ich gehe davon aus das ich das batch mit den sysinternal tools aufbauen muss, oder?
Ausserdem benötige ich sicherlich auch noch eine hosts datei wo ich all meine server eintrage auf denen die aktion ausgefüjrt werden soll?!

Könnt ihr mir dabei helfen bzw. mich unterstützen? Am besten wäre natürlich wenn das Verzeichnis welches auf dem Fileserver liegt auf allen anderen Servern gesynct werden könnte, da ich auf dem Fileserver die sourcen regelmässig aktualisieren werde. Somit könnte ich dann eine aufgabe auf jeden server erstellen welche das batch skript ausführt welches dann im gesncten ordner liegt Auf dem Fileserver gibt es dann ein Verzeichnis welches "source" heisst und ein verzeichnis welches "skript" heisst und ändern tut sich nur die source - skript bleit natürlich immer gleich.

Content-ID: 276002

Url: https://administrator.de/contentid/276002

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

Pjordorf
Pjordorf 29.06.2015 um 21:36:39 Uhr
Goto Top
Hallo,

Zitat von @winlin:
- es gibt eine latte an server auf denen ein skript lokal mit adminrechten ausgeführt werden soll
Domäne oder jeder Server Einzelkämpfer?

- das skript und die sourcen liegen auf einem fileserver
Was spricht dagegen dies vom Fileserver auf die latte an Server zu Kopieren (Wirst doch wohl vom FileServer auf die Unzahl an Server kommen, oder?)?

- das batchfile sowie die sourcen sollen vom fileserver lokal auf die Platte eines jeden Servers kopiert werden
Mach es zentral vom Fileserver auf die Server in einer Schleife (FOR ....IN..... DO.....)

- liegt es dann mal lokal auf jeden server dann soll es einfach nur ausgeführt werden und ein reboot iniziiert werden - am
Geplanter Task? Manuell per PSExec? Per Start- oder Shutdown Skript? Turnschuhadministartion oder Fernwartung?

besten mit logfile und Datum
Das Neu starten oder was? Wenn deine Batchdatei Logs schreiben soll, dann eben einbauen...

Ich gehe davon aus das ich das batch mit den sysinternal tools aufbauen muss, oder?
Sysinternal Tool hat mit der Batchdatei nix zu tun. Ansonsten bitte dein Ansinnen hier genauer erläutern.

Ausserdem benötige ich sicherlich auch noch eine hosts datei wo ich all meine server eintrage auf denen die aktion ausgefüjrt werden soll?!
Und was bitte hat das mit der berühmten HOSTS Datei zu tun? Keine andere Form der Namensauflösung vorhanden z.B. DNS?

Könnt ihr mir dabei helfen bzw. mich unterstützen?
Grundlagen Batch? Grundlagen Namensuflösung? Grundlagen Sysinternal Tools? Schaust du mal hier sofern es Windows betreffen sollte. http://www.robvanderwoude.com/batchfiles.php Hosts Datei siehe hier https://en.wikipedia.org/wiki/Hosts_(file)

Am besten wäre natürlich wenn das Verzeichnis welches auf dem Fileserver liegt auf allen anderen Servern gesynct werden könnte,
Dann tu es doch. copy, xcopy, robocopy . . .

da ich auf dem Fileserver die sourcen regelmässig aktualisieren werde.
Aha, noch eine unnötige Softwareverteilung in Eigenbau......

Somit könnte ich dann eine aufgabe auf jeden server erstellen welche das batch skript ausführt welches dann im gesncten ordner liegt Auf dem Fileserver gibt es dann ein Verzeichnis welches "source" heisst und ein verzeichnis welches "skript" heisst und ändern tut sich nur die source - skript bleit natürlich immer gleich.
Und wo ist jetzt dein Problem?

Gruß,
Peter
winlin
winlin 29.06.2015 aktualisiert um 22:30:58 Uhr
Goto Top
dachte eher an konstruktive kritik peter.

Möchte es nun so machen. Auf dem Fileserver erstelle ich eine batch datei welche per robocopy das gewünschte verzeichnis auf alle server spiegelt und ne log schreibt, z.b. so:
robocopy "%USERNAME%\Desktop\Bilder" \\Computername\Bilder /MIR /ZB /TEE /LOG:"%USERPROFILE%\Desktop\robocopy.log" /SAVE:"%USERPROFILE%\Desktop\Jobfile"  

Obiges Beispiel ist nur für einen Host gedacht. Um aber das ganze auf mehrere Hosts also Server zu spiegeln, muss ich eine Datei angeben wie z.b. hosts.txt in welcher ich dann die ziele eintrage:
foreach($_ in Get-Content hosts.txt) { robocopy C:\ \\$_\c$\folder file.cfg }

Bekomm ich euer OK? face-smile))

Ok soweit so gut....damit hätte ich dann das verzeichnis vom fileserver auf alle meine server kopiert.

Nun der zweite schritt - "das ausführen der batch datei" im zielverzeichnis mit adminrechten und das ergebnis in die log schreiben....sowie ein shutdown -r -t 0
Jannis92
Jannis92 29.06.2015 um 22:30:47 Uhr
Goto Top
Keine Ahnung ob dir das Tool etwas sagt, aber für die Remoteausführung von deinem Script (wenn es fertig ist :p ) verwende von Sysinternals "PSexec"

PSExec.exe \\%SERVERNAME% -u Username -p Password "Pfad zu deinem Script"
Oder halt PsExec /?

Vllt. bringt es dich ein Stück ans Ziel :p
winlin
winlin 29.06.2015 um 22:41:43 Uhr
Goto Top
ja das hatte ich oben erwähnt sysinternals.....psexec ist ja ein tool davon....
wie binde ich nun in deiem Befehl 20-30 server hinzu auf denen der befehl ausgeführt werden soll?????
psexec.exe @file -u USERNAME -p PASSWORD "PFAD ZUM SKRIPT"  
Pjordorf
Lösung Pjordorf 29.06.2015, aktualisiert am 01.07.2015 um 12:42:14 Uhr
Goto Top
Hallo,

Zitat von @winlin:
wie binde ich nun in deiem Befehl 20-30 server hinzu auf denen der befehl ausgeführt werden soll?????
Möchtest du jetzt die Antwort so oft wie du Fragezeichen postest, dann nutze och eine Schleife dazu.
For ..... In... Do (Batch). Aber du scheinst da was von Powershell bei dir einzubauen......
http://www.robvanderwoude.com/ntfor.php
http://www.windowspro.de/script/schleifen-powershell-foreach-while-do-u ...

psexec.exe @File -u USERNAME -p PASSWORD "PFAD ZUM SKRIPT"
Schau dir nochmals die Syntax an..... https://technet.microsoft.com/de-de/sysinternals/bb897553.aspx

http://www.script-example.com/index.php/Remote-Befehle-ausfhren-mit-pse ...

For Varible in (deine liste der Rechner) do (PSexec.....)

Gruß,
Peter