Datei/Ordner auf mehrere Server kopieren

DamnedFreak

Otaku :)
Thread Starter
Mitglied seit
04.02.2009
Beiträge
2.797
Ort
Hannover
Hallo zusammen,

habe folgende Problematik:

Ich muss auf etwa 400 Server (alle in der selben Domäne) einen Ordner nach C: kopieren und eine Verknüpfung auf eine Datei in diesem Ordner in den Autostart kopieren
Da sowohl 2003 und 2008 Server dabei sind, muss der Pfad zum Autostart vorher per if exist geprüft werden.

Gibt es eine Möglichkeit das ganze so zu vereinfachen, dass man quasi eine Serverliste hat, die nacheinander durchgearbeitet wird?

Auf allen Server manuell kopieren dauert ewig, zumal das bis zum Ende des Jahres auch noch 1-2 mal kommen könnte.

Dass ich einmal xcopy (für den Ordner) und copy (für die Verknüpfungsdatei) nutzen muss ist mir klar, ebenso wie die Nutzung des if exists funktioniert - allerdings hab ich keinerlei Anhaltspunkt ob es machbar ist so eine Art Abarbeitungsliste zu machen.

Vielleicht hat das ja jemand schon einmal gemacht und kann mir helfen.

Vielen Dank schon mal im Voraus!

MfG
freaky
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Schreib die doch einfach in eine Textdatei mit allen Servern und lese die zeilenweise aus ?
In die For-Schleife dann deine xcopy und sonstwelche Befehle..... die dann für jede Zeile der Textdatei ausgeführt werden.

Wie siehts mit Zugriffsberechtigung aus ? Musst du evtl. beachten, je nachdem wie die Server konfiguriert sind, dass du dich vor dem kopieren mit Benutzer/Passwort authentifizieren musst.
 
Alle Server sind in der selben Domäne, ich bin auf allen Servern über eine Gruppe als Local Admin berechtigt. Da ich das Script auf einem der Server starten würde, ist kein weiterer Login nötig.

Das mit dem zeilenweise auslesen werd ich mir jetzt mal genauer anschauen, vielen Dank schonmal! :)
 
Code:
FOR /F "usebackq delims=" %%i in ("serverliste.txt") do set server=%%i& call :bubu
exit

:bubu


[COLOR="#FF0000"]Hier deine Befehle rein und die Variable server enthält eine Zeile aus der Serverliste[/COLOR]

GOTO :EOF
 
Zuletzt bearbeitet:
Bei mir sieht es jetzt folgendermaßen aus:

PHP:
for /f %%i in (serverliste.txt) do (
IF EXIST "\\%%i\C$\Documents and Settings\All Users\Start Menu\Programs\Startup" (
REM Do copy changelog.lnk "\\%%i\C$\Documents and Settings\All Users\Start Menu\Programs\Startup"
) ELSE (
REM Do copy changelog.lnk "\\%%i\C$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
)
echo D | xcopy /E Changelog "\\%%i\C$\Changelog"
)

Allerdings funktioniert nur das xcopy, irgendwo scheint eine Kleinigkeit zu fehlen oder sich ein kleiner Fehler eingeschlichen zu haben. Evtl. jemand ne Idee? :/

Danke im Voraus!


edit:

Code:
FOR /F "usebackq delims=" %%i in ("serverliste.txt") do set server=%%i& call :bubu
exit

:bubu


[COLOR=#FF0000]Hier deine Befehle rein und die Variable server enthält eine Zeile aus der Serverliste[/COLOR]

GOTO :EOF


fast zeitgleich gepostet ;) werd das in dem kontext mal probieren! danke!
 
Zuletzt bearbeitet:
Probier mal die Pipe lieber so zu schreiben
Code:
echo D ^| copy
 
Probier mal die Pipe lieber so zu schreiben
Code:
echo D ^| copy

funktioniert leider nicht. das echo/xcopy ist auch nicht so das problem, das läuft so wie es grad ist - notfalls wirds dann noch ein zweites script geben, eins für die verknüpfung und eins für das txt file selbst.
primär gehts ja jetzt um die verschaltete exist abfrage mit dem copy :/
 
bei 2003 und aufwärts würde ich das per gpp machen (also gruppenrichtlinien)
die 2000er würde ich ausm ad auslesen und diese entsprechend der hier vorgeschlagenen skriptlösung versorgen
 
bei 2003 und aufwärts würde ich das per gpp machen (also gruppenrichtlinien)
die 2000er würde ich ausm ad auslesen und diese entsprechend der hier vorgeschlagenen skriptlösung versorgen

gruppenrichtlinien kann ich aus berechtigungsgründen nicht setzen.

und 2000er sind doch nicht dabei, war mein fehler. waren einige server auf denen noch sql2000 lief, hatte das daher noch im kopf... ;)
 
Zuletzt bearbeitet:
*schubs*

---------- Post added at 08:48 ---------- Previous post was at 07:07 ----------

manchmal sieht man den wald vor lauter bäumen nicht :>

PHP:
for /f %%i in (serverliste.txt) do (
IF EXIST "\\%%i\C$\Documents and Settings\All Users\Start Menu\Programs\Startup" (
copy changelog.txt "\\%%i\C$\Documents and Settings\All Users\Start Menu\Programs\Startup"
) ELSE (
copy changelog.txt "\\%%i\C$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
)
xcopy /E Changelog "\\%%i\C$\Changelog\"
)

das rem do vor den beiden copys musste raus, nun gehts. und das | D für die übergabe konnt ich mir auch sparen, ein \ hinter dem pfad sagt ihm direkt, dass das ziel ein pfad ist :)

dennoch vielen dank für die antworten oben ;)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh