
17867
12.01.2009, aktualisiert um 13:16:00 Uhr
Logon Scrip Dateien ändern, ersetzen
Ich möchte ein Logon Script erstellen um ein Skript zu starten, das bei der Windows Anmeldung eine "Service.ini" Datei editiert und speichert bzw. diese Datei ersetzt durch eine Datei die auf dem Logon Server liegt.
Es handelt sich um eine Datei in der ein Servername abgelegt ist, dieser Servername wurde geändert und nun soll auf jedem Windows Client (wenn er startet) diese service.ini ändern (also neuen Servernamen eintragen und speichern). Wie erstelle ich nun eine batch Datei???
service.ini sieht JETZT so aus:
PFAD: C:\Program Files (x86)\OCS Inventory Agent
[OCS_SERVICE]
NoProxy=1
Server=ceplx067
Pnum=80
Miscellaneous= /NP /server:xxx /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=1
TTO_WAIT=47580
und soll in Zukunft so aussehen:
PFAD: C:\Program Files (x86)\OCS Inventory Agent
[OCS_SERVICE]
NoProxy=1
Server=caeinventar.web.porsche.de
Pnum=80
Miscellaneous= /NP /server:xxx /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=24
TTO_WAIT=47580
Es handelt sich um eine Datei in der ein Servername abgelegt ist, dieser Servername wurde geändert und nun soll auf jedem Windows Client (wenn er startet) diese service.ini ändern (also neuen Servernamen eintragen und speichern). Wie erstelle ich nun eine batch Datei???
service.ini sieht JETZT so aus:
PFAD: C:\Program Files (x86)\OCS Inventory Agent
[OCS_SERVICE]
NoProxy=1
Server=ceplx067
Pnum=80
Miscellaneous= /NP /server:xxx /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=1
TTO_WAIT=47580
und soll in Zukunft so aussehen:
PFAD: C:\Program Files (x86)\OCS Inventory Agent
[OCS_SERVICE]
NoProxy=1
Server=caeinventar.web.porsche.de
Pnum=80
Miscellaneous= /NP /server:xxx /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=24
TTO_WAIT=47580
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 105763
Url: https://administrator.de/forum/logon-scrip-dateien-aendern-ersetzen-105763.html
Ausgedruckt am: 30.04.2025 um 21:04 Uhr
25 Kommentare
Neuester Kommentar

Servus,
Gruß
fc \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
if not %errorlevel%==0 copy \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
:end
Gruß

Servus,
yupp das war in der Antwort ohne beschreibung.
Überprüfe, ob Datei vom Server identisch mit der vom Client ist - wenn nicht kopiere die Serverdatei zum client.
Es gibt natürlich auch andere Wege z.B das auslesen der Datei und nachsehen, ob Porsche drinsteht usw. jedoch denke ich der FC Weg ist der schnellste und Falls sich ein anderer Wert in der Datei ändert - auch der flexibelste.
gruß
yupp das war in der Antwort ohne beschreibung.
Überprüfe, ob Datei vom Server identisch mit der vom Client ist - wenn nicht kopiere die Serverdatei zum client.
Es gibt natürlich auch andere Wege z.B das auslesen der Datei und nachsehen, ob Porsche drinsteht usw. jedoch denke ich der FC Weg ist der schnellste und Falls sich ein anderer Wert in der Datei ändert - auch der flexibelste.
gruß

Servus,
du kannst natürlich auch nach der Service.ini suchen:
Jedoch kostet das suchen ansich ordentlich Zeit und von daher wäre es sinnvoller, die Suche in bestimmten Ordnern nach der ini durchzuführen.
Ergo
oder noch anders:
Natürlich ist der 2. Pfad nur ein willkürlich als Beispiel herangenommener.
Gruß
Ps: Das suchen würde ich mir abschminken, denn gibt es aus irgendeinem Grund eine Service.ini in einem Pfad, der nichts mit deiner Anwendung (CAESAR?) zu tun hat, müßte auch die dann nicht nur nach dem alten Server sehen, sondern auch nach einem Wert, der Garantiert drin ist, wenn es "deine" Service.ini ist
Ergo Theoretisch machbar, aber bitte nicht im Loginscript, dass dauernd durchläuft und jede Anmeldung "blockiert"
du kannst natürlich auch nach der Service.ini suchen:
Jedoch kostet das suchen ansich ordentlich Zeit und von daher wäre es sinnvoller, die Suche in bestimmten Ordnern nach der ini durchzuführen.
Ergo
fc \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
if %errorlevel%==2 rem echo in C:\Program Files (x86)\OCS Inventory Agent keine Service.ini
fc \\server\freigabe\service.ini "%Programfiles%\OCS Inventory Agent\service.ini"
if not %errorlevel%==0 copy \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
:end
oder noch anders:
if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=C:\Program Files (x86)\OCS Inventory Agent"
if exist "%Programfiles\OCS Inventory Agent\service.ini" set "Pfad=%Programfiles%\OCS Inventory Agent"
fc \\server\freigabe\service.ini %Pfad%\service.ini"
Natürlich ist der 2. Pfad nur ein willkürlich als Beispiel herangenommener.
Gruß
Ps: Das suchen würde ich mir abschminken, denn gibt es aus irgendeinem Grund eine Service.ini in einem Pfad, der nichts mit deiner Anwendung (CAESAR?) zu tun hat, müßte auch die dann nicht nur nach dem alten Server sehen, sondern auch nach einem Wert, der Garantiert drin ist, wenn es "deine" Service.ini ist
Ergo Theoretisch machbar, aber bitte nicht im Loginscript, dass dauernd durchläuft und jede Anmeldung "blockiert"

Servus für verfeinerungen bin ich ja grundsätzlich immer offen 
Wenn du mal die Zeile(n) mit dem FC genauer ansiehst
Ergo überprüft das Script bereits, ob die Datei auf dem Server identisch mit der vom Client ist und kopiert nur, wenn Sie nicht identisch ist
Gruß
Wenn du mal die Zeile(n) mit dem FC genauer ansiehst
- FC ist ein Befehl der Filecompare in Langform lauten würde.
Ergo überprüft das Script bereits, ob die Datei auf dem Server identisch mit der vom Client ist und kopiert nur, wenn Sie nicht identisch ist
Gruß

Zitat von @17867:
vergleicht sie auch den Inhalt der datei???also ob der inhalt gleich
ist oder ob nur eine datei mit namen service.ini besteht???
vergleicht sie auch den Inhalt der datei???also ob der inhalt gleich
ist oder ob nur eine datei mit namen service.ini besteht???
rem vergleiche \\server\freigabe\service.ini mit "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
fc \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
rem wenn Fehlerwert 2 ist die Datei nicht vorhanden
if %errorlevel%==2 rem echo in C:\Program Files (x86)\OCS Inventory Agent keine Service.ini
rem vergleiche \\server\freigabe\service.ini mit "%Programfiles%\OCS Inventory Agent\service.ini"
fc \\server\freigabe\service.ini "%Programfiles%\OCS Inventory Agent\service.ini"
rem wenn Fehler nicht 0 (Dateien identisch) dann kopiere
if not %errorlevel%==0 copy \\server\freigabe\service.ini "C:\Program Files (x86)\OCS Inventory Agent\service.ini"
:end
Es wird also zuerst verglichen und im Fall eines Falles kopiert.
edit
Wobei untenstehender Schnippsel "Eleganter" formuliert ist und im Prinzip das gleiche macht:
rem suche service.ini in "C:\Program Files (x86)\OCS Inventory Agent\" wenn ja setzte Variable Pfad dorthin.
if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=C:\Program Files (x86)\OCS Inventory Agent"
rem suche service.ini in "%Programfiles%\OCS Inventory Agent\" wenn ja setzte Variable Pfad dorthin.
if exist "%Programfiles\OCS Inventory Agent\service.ini" set "Pfad=%Programfiles%\OCS Inventory Agent"
rem vergleiche die Serverdatei mit der aus dem Pfad
fc \\server\freigabe\service.ini "%Pfad%\service.ini"
rem auch hier wieder wenn Fehler ungleich 0 kopiere
if not %errorlevel%==0 copy \\server\freigabe\service.ini "%Pfad%\service.ini"

Zitat von @17867:
gerade ausprobiert.....funktioniert nicht
ich sehe zwar das auf
die datei zugegriffen wird aber der alte inhalt der datei ist immer
noch gleich.....das heisst die alte datei wird nicht ersetzt obbwohl
sie sich von der zu ersetzenden datei unterscheidet...hiiiifleeee
gerade ausprobiert.....funktioniert nicht
die datei zugegriffen wird aber der alte inhalt der datei ist immer
noch gleich.....das heisst die alte datei wird nicht ersetzt obbwohl
sie sich von der zu ersetzenden datei unterscheidet...hiiiifleeee
Servus,
"was" siehst du und willst du das, was du sieht uns vorenthalten?
Kannst du überhaupt den Dateinamen ändern?
Liegt ein Schreibschutz drauf, weil das Program xyz gerade darauf zugreift?
Hat der Benutzer überhaupt schreibrechte auf %programfiles%\xyz?
Du wilst .hiiiifleeee - gut - ich will mehr input.
Gruß

Servus,
also folgendes muß funktionieren:
Das Script muß mit Adminrechten laufen - erst wenn es "funktioniert" wird weiter spekulatiert - wie es weitergeht (Computerstartupscript oder PSexec)
Meine Frage:
"was" siehst du und willst du das, was du sieht uns vorenthalten?
bezog sich auf diese Zeile:
Und irgendwie finde ich da keine Antwort - die hast du ganz gut versteckt oder vergessen?
Btw: Ich hab dir 2 Varianten zur Verfügung gestellt - welche benutzt du?
Gruß
Edit:
Was ist der Output - wenn du als Admin dieses Script laufen läßt?
also folgendes muß funktionieren:
Das Script muß mit Adminrechten laufen - erst wenn es "funktioniert" wird weiter spekulatiert - wie es weitergeht (Computerstartupscript oder PSexec)
Meine Frage:
"was" siehst du und willst du das, was du sieht uns vorenthalten?
bezog sich auf diese Zeile:
ich sehe zwar das auf die datei zugegriffen wird
Und irgendwie finde ich da keine Antwort - die hast du ganz gut versteckt oder vergessen?
Btw: Ich hab dir 2 Varianten zur Verfügung gestellt - welche benutzt du?
Gruß
Edit:
Was ist der Output - wenn du als Admin dieses Script laufen läßt?
rem suche service.ini in "C:\Program Files (x86)\OCS Inventory Agent\" wenn ja setzte Variable Pfad dorthin.
if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=C:\Program Files (x86)\OCS Inventory Agent"
rem suche service.ini in "%Programfiles%\OCS Inventory Agent\" wenn ja setzte Variable Pfad dorthin.
if exist "%Programfiles\OCS Inventory Agent\service.ini" set "Pfad=%Programfiles%\OCS Inventory Agent"
rem vergleiche die Serverdatei mit der aus dem Pfad
fc \\server\freigabe\service.ini "%Pfad%\service.ini"
rem auch hier wieder wenn Fehler ungleich 0 kopiere
if not %errorlevel%==0 copy \\server\freigabe\service.ini "%Pfad%\service.ini"
echo %Pfad%
pause

Servus,
das letzte mal, das ich dir auf eine Antwort schreibe - die komplett ohne Zeilenschaltung (Absätze) von dir geschrieben wurde.
Ich hab keinen Bock auf Augenkrebs
Gruß
das letzte mal, das ich dir auf eine Antwort schreibe - die komplett ohne Zeilenschaltung (Absätze) von dir geschrieben wurde.
Ich hab keinen Bock auf Augenkrebs
- Starte eine Dosbox
- schiebe die letzte Batch von mir in diese Dosbos
- Schreibe das, was die Dosbos ausgibt - hier als Antwort rein.
Gruß

Servus,
"schönes" Script - aber das hat mit dem, das ich für dich geschrieben habe - wohl eher weniger zu tun....
Du fragst ab jetzt besser deinen Ausbilder, ich hab die Lust verloren bei dir dauernd Nasebohrenderweise
ausführlich geREMte Scripts - die quasi selbsterklärend sind - noch weiter zu erklären.
Meine freiwillige Hilfe zur Selbsthilfe hab ich mehr als einmal erfüllt.
Von dir kam da leider nie das zurück, was ich mir erhofft habe.
Gruß
"schönes" Script - aber das hat mit dem, das ich für dich geschrieben habe - wohl eher weniger zu tun....
Du fragst ab jetzt besser deinen Ausbilder, ich hab die Lust verloren bei dir dauernd Nasebohrenderweise
ausführlich geREMte Scripts - die quasi selbsterklärend sind - noch weiter zu erklären.
Meine freiwillige Hilfe zur Selbsthilfe hab ich mehr als einmal erfüllt.
Von dir kam da leider nie das zurück, was ich mir erhofft habe.
Gruß

passt schon...
hinter %Programfiles fehlte ein %
überall wo
hinter %Programfiles fehlte ein %
überall wo
\\server\freigabe\service.ini
steht - funktioniert das script logischerweised nicht, außer du hast einen Server namens Server und eine Freigabe namens Freigabe...if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=C:\Program Files (x86)\OCS Inventory Agent"
if exist "%Programfiles%\OCS Inventory Agent\service.ini" set "Pfad=%Programfiles%\OCS Inventory Agent"
fc \\server\freigabe\service.ini "%Pfad%\service.ini"
if not %errorlevel%==0 copy \\server\freigabe\service.ini "%Pfad%\service.ini"
echo %Pfad%
pause

Zitat von @17867:
ahaaaaaaa interessant es funktioniert
))) lag wohl wirklich am
%...DAAAAANNKKEEEEe
(aber funktioniert nur wenn es der admin macht....nur is es ja so das
sich der user anmeldet und dieses skript gestartet wird vom logon
server...der user hat ja bekanntlich keine rechte...gibts dazu ne
lösung???
ahaaaaaaa interessant es funktioniert
%...DAAAAANNKKEEEEe
(aber funktioniert nur wenn es der admin macht....nur is es ja so das
sich der user anmeldet und dieses skript gestartet wird vom logon
server...der user hat ja bekanntlich keine rechte...gibts dazu ne
lösung???
Nachdem das Script nun ansich funktioniert - kann an der weiter "verbreitung" geforscht werden....
Aber ich sehe - wir vergessen mal alles bisherige und du nimmst nun dieses:
:para
@setlocal
@Set "quelle=%logonserver%\netlogon"
echo check for installdir
if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=C:\Program Files (x86)\OCS Inventory Agent" && goto update
if exist "%Programfiles%\OCS Inventory Agent\service.ini" set "Pfad=%Programfiles%\OCS Inventory Agent" && goto update
:install
ECHO OCS Directory Not Found, Installing OCS Service...
start /wait %quelle%\OcsAgentSetup.exe /np /install
:update
ECHO stopping OCS service
net stop "ocs inventory"
fc \\server\freigabe\service.ini "%Pfad%\service.ini"
if not %errorlevel%==0 copy %quelle%\service.ini "%Pfad%\service.ini"
ECHO starting OCS Service
net start "ocs inventory"
IF ERRORLEVEL 0 GOTO end
:end
ECHO All Done!
genau so wollte ich es haben (vorausgesetzt das user/admin Problem
kann behoben werden.
sag mal kann ich da noch 2 dinge einbauen?
er soll in zwei "möglichen"
Installationsverzeichnissesn suchen:
1.
wie gewohnt : C:\Program Files (x86)\OCS Inventory Agent\ [native
Maschinen]
aber auch in: C:\Programme\OCS Inventory Agent\ [Vmware WinXP]
Bitte - lass mich das nicht dauernd wiederholen, das Script sucht doch schon seit 12.1 in den beiden Ordnern...
Wenn ich merke, das ohne denken nur copy & paste gemacht wird und immer wieder die gleiche Frage gestellt und beantwortet wird...
Verstehst du das etwas?
Mein Wissen, das ich zur Verfügung stelle, hab ich auch nicht durch Daumenlutschen bekommen ...
2.
überprüfen ob OCS bereits installiert ist. unter:
C:\Program Files (x86)\
C:\Programme\
wenn nicht soll die installationsdatei auf dem server ausgeführt
werden.
(besteht die Möglichkeit die installation ohne die Aktion des
Users installieren zu lassen und 2 dinge automatisiert dem
installationsprogramm zu übergeben??? diese wären:
Server Name: domain.server.de
no proxy (Häckchen setzen!)
überprüfen ob OCS bereits installiert ist. unter:
C:\Program Files (x86)\
C:\Programme\
wenn nicht soll die installationsdatei auf dem server ausgeführt
werden.
(besteht die Möglichkeit die installation ohne die Aktion des
Users installieren zu lassen und 2 dinge automatisiert dem
installationsprogramm zu übergeben??? diese wären:
Server Name: domain.server.de
no proxy (Häckchen setzen!)
Die möglichkeit besteht, frag dazu den Hersteller nach den Parametern für silent install.
Aber ich dachte, die Daten stehen in der Service.ini
Gruß und nimm meinen Rat zu Herzen, ich überlege wirklich - ob ich ein selbstgespräch mit einem Lernresistenten habe.
Dein weiteres vorgehen ist also nach Computerstartupscripten und psexec zu googeln
Und dir selber eine Meinung zu bilden, ob du es per Computerstartupscript oder psexec lösen wirst.
Meine Gedanken sind bei dir, meine Finger und mein Hirn schweigen aber