17867
Goto Top

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

Content-Key: 105763

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

Printed on: April 25, 2024 at 03:04 o'clock

Mitglied: 60730
60730 Jan 12, 2009 at 11:44:10 (UTC)
Goto Top
Servus,

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ß
Mitglied: 17867
17867 Jan 12, 2009 at 11:51:15 (UTC)
Goto Top
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

Das heisst jetzt hier das meine neue service.ini datei auf dem „Server“ im Ordner Freigabe steckt. Diese wird dann beim Windows Start vom „Server“ in das lokale Verzeichnis reinkopiert (hier: C:\Program Files (x86)\OCS Inventory Agent\service.ini).

Ist das so richtig? Das skript ersetzt also die aktuelle service.ini mit der neuen die auf dem Server unter Freigabe stehen?
Mitglied: 60730
60730 Jan 12, 2009 at 11:54:17 (UTC)
Goto Top
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ß
Mitglied: 17867
17867 Jan 12, 2009 at 12:07:15 (UTC)
Goto Top
danke dir für dein hilfe. es ist eben so das es diese service.ini datei auf jedem client gibt. Und in diesem file muss nur der server geändert werden. kann man es auch so machen das beim Start von Windows nach dieser Datei gesucht wird (suchen, weil es verscheidene installationsorte gibt, leider!) und wenn er die Datei findet diese überprüft ob der alte servername drinsteht, wenn ja soll er ersetzt werden durch den neuen, wenn er aber schon aktuell ist soll er es belassen.

SERVICE.INI:
NEUER SERVER: caeinventar.web.name.de

[OCS_SERVICE]
NoProxy=1
Server=ceplx067 (das ist der alte Servername!)
Pnum=80
Miscellaneous= /NP /server:ceplx067 /pnum:80 (das ist der alte Servername!)
PROLOG_FREQ=24
OLD_PROLOG_FREQ=1
TTO_WAIT=47580
Mitglied: 60730
60730 Jan 12, 2009 at 12:28:22 (UTC)
Goto Top
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
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 face-wink

Ergo Theoretisch machbar, aber bitte nicht im Loginscript, dass dauernd durchläuft und jede Anmeldung "blockiert"
Mitglied: 17867
17867 Jan 12, 2009 at 14:22:45 (UTC)
Goto Top
hey danke für deine Hilfe. Ich werde deinen Rat befolgen und nicht suchen! Ich werde dein erstes Skript nutzen um die Konfigurationsdatei zu erstzen. Aber eine Verfeinerung hätte ich noch. Kann man es so machen:

1. Rechner meldet sich an
2. Überprüfung ob in der Datei C:\Program Files (x86)\OCS Inventory Agent\service.ini der Server XXX drinsteht
3. Wenn nicht, erst dann soll die neue service.ini von Netlogon Server kopiert werden.

Hiermit würde erst ne Überprüfung stattfinden ob der Server aktualisiert wurde. Wenn er es ist so muss keine konfigurationsdatei auf den client kopiert werden. wenn aber in dieser Datei noch der alte drinsteht erst dann wird vom Netlogon Server auf den client kopiert.
Mitglied: 60730
60730 Jan 12, 2009 at 14:33:40 (UTC)
Goto Top
Servus für verfeinerungen bin ich ja grundsätzlich immer offen face-wink

Wenn du mal die Zeile(n) mit dem FC genauer ansiehst face-wink

  • 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 face-wink

Gruß
Mitglied: 17867
17867 Jan 12, 2009 at 14:40:02 (UTC)
Goto Top
vergleicht sie auch den Inhalt der datei???also ob der inhalt gleich ist oder ob nur eine datei mit namen service.ini besteht???
Mitglied: 60730
60730 Jan 12, 2009 at 14:58:22 (UTC)
Goto Top
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???

face-wink

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"  
Gruß
Mitglied: 17867
17867 Jan 20, 2009 at 12:43:35 (UTC)
Goto Top
hi,

bevor ichs nun auf den server lege wollt ich fragen ob das so nun alles ok ist....alle leerzeichen da? alle befehle richtig???Gross/Kleinschreibung???führt er das nun aus????
noch eins brauche ich. Er soll noch im folgendem Pfad nach dieser datei suchen: C:\Programme\OCS Inventory Agent\. Da es eben diese zwei Ordner gibt sollen die durchsucht werden.

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.tech.test.domain.com\netlogon\service.ini %Pfad%\service.ini"
Mitglied: 17867
17867 Jan 20, 2009 at 13:04:15 (UTC)
Goto Top
gerade ausprobiert.....funktioniert nicht face-sad 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
Mitglied: 60730
60730 Jan 20, 2009 at 13:07:52 (UTC)
Goto Top
Zitat von @17867:
gerade ausprobiert.....funktioniert nicht face-sad 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

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ß
Mitglied: 17867
17867 Jan 20, 2009 at 13:22:40 (UTC)
Goto Top
Also nochmals erklärt dann is ales klaroface-smile)) Es sieht folgendermassen aus:

Habe 80 Rechner auf denen es eine service.ini gibt. Diese liegt bei manchen Rechner in:
C:\Program Files (x86)\OCS Inventory Agent\service.ini
oder in
C:\Programme\OCS Inventory Agent\service.ini

Genau in dieser Datei steht ein Server drin sowie PROLOG_FREW und OLD_PROLOG_FREW die nun ersetzt werden sollen. so nun will ich ein batch haben das dies für mich automatisch ändert und nicht händisch. eigentlich muss nur der server abgeändert werden auf allen 80 Rechnern, damit sich die clients beim nächsten windows start am neuen server anmelden und nich mehr am alten.

alte service.ini sieht so aus:
[OCS_SERVICE]
NoProxy=1
Server=server.de
Pnum=80
Miscellaneous= /NP /server:server.de /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=24
TTO_WAIT=41640

neue service.ini soll so aussehen:
[OCS_SERVICE]
NoProxy=1
Server=domain.server.de
Pnum=80
Miscellaneous= /NP /server:domain.server.de /pnum:80
PROLOG_FREQ=1
OLD_PROLOG_FREQ=1
TTO_WAIT=41640

Natürlich haben alle User keine Admin rechte und deswegen klappt denke ich mal auch das Skript nicht. Ich habe mich aber mal als Admin angemeldet an einem Rechner und das Skript selber gestartet - es tat sich nichts ausser das drauf zugegriffen worden ist ohne irgendeine aktion. Auf diese Datei wird nicht zugegriffen, nur beim Systemstart um sich am Server zu registrieren (is ja ein inventar tool). Admin kann datei editieren, user nicht. So nun habe ich alles erklärt - aber habe noch keine Lösungface-sad
Mitglied: 17867
17867 Jan 20, 2009 at 13:24:26 (UTC)
Goto Top
Zitat von @17867:
Also nochmals erklärt dann is ales klaroface-smile)) Es sieht
folgendermassen aus:

Habe 80 Rechner auf denen es eine service.ini gibt. Diese liegt bei
manchen Rechner in:
C:\Program Files (x86)\OCS Inventory Agent\service.ini
oder in
C:\Programme\OCS Inventory Agent\service.ini

Genau in dieser Datei steht ein Server drin sowie PROLOG_FREW und
OLD_PROLOG_FREW die nun ersetzt werden sollen. so nun will ich ein
batch haben das dies für mich automatisch ändert und nicht
händisch. eigentlich muss nur der server abgeändert werden
auf allen 80 Rechnern, damit sich die clients beim nächsten
windows start am neuen server anmelden und nich mehr am alten.

alte service.ini sieht so aus:
[OCS_SERVICE]
NoProxy=1
Server=server.de
Pnum=80
Miscellaneous= /NP /server:server.de /pnum:80
PROLOG_FREQ=24
OLD_PROLOG_FREQ=24
TTO_WAIT=41640

neue service.ini soll so aussehen:
[OCS_SERVICE]
NoProxy=1
Server=domain.server.de
Pnum=80
Miscellaneous= /NP /server:domain.server.de /pnum:80
PROLOG_FREQ=1
OLD_PROLOG_FREQ=1
TTO_WAIT=41640
(DIESE NEUE SERVICE.INI liegt bereits auf dem Netlogon server, dachte am besten ist es die alten dateien auf den clients durch diese zu ersetzen.)

Natürlich haben alle User keine Admin rechte und deswegen klappt
denke ich mal auch das Skript nicht. Ich habe mich aber mal als Admin
angemeldet an einem Rechner und das Skript selber gestartet - es tat
sich nichts ausser das drauf zugegriffen worden ist ohne irgendeine
aktion. Auf diese Datei wird nicht zugegriffen, nur beim Systemstart
um sich am Server zu registrieren (is ja ein inventar tool). Admin
kann datei editieren, user nicht. So nun habe ich alles erklärt -
aber habe noch keine Lösungface-sad
Mitglied: 60730
60730 Jan 20, 2009 at 14:03:28 (UTC)
Goto Top
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:
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
Mitglied: 17867
17867 Jan 20, 2009 at 14:21:41 (UTC)
Goto Top
also was ich sehe ist folgendes. Wenn ich das Skript starte (manuell, lokal) auf dem client dann sehe ich das die Datei geändert worden ist (im Explorer unter modified). also findet ein Zugriff statt. Doch wenn ich in meine konfig datei reinschaue dann sind immer noch die alten werte drin.
PS: ich benutze die letzte DAtei die du gepostet hast.
Mitglied: 60730
60730 Jan 20, 2009 at 14:41:38 (UTC)
Goto Top
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 face-wink

  • Starte eine Dosbox
  • schiebe die letzte Batch von mir in diese Dosbos
  • Schreibe das, was die Dosbos ausgibt - hier als Antwort rein.

Gruß
Mitglied: 17867
17867 Jan 20, 2009 at 15:03:24 (UTC)
Goto Top
@echo OFF
REM This batch program will install the OCS Service
REM and copy the initial service.ini that directory
REM in program files used by OCS
REM
REM first, check if directory exists, if so, service is already installed
:begin
ECHO Checking to see if OCS Service is Installed...
IF NOT EXIST "C:\Program Files (x86)\OCS Inventory Agent" GOTO install
ECHO Service already installed, copy service.ini to OCS directory...
copy "\\server\service.ini" "C:\Program Files (x86)\OCS Inventory Agent"
ECHO Service Installed
:stopstart
ECHO stopping OCS service
net stop "ocs inventory"
ECHO starting OCS Service
net start "ocs inventory"
IF ERRORLEVEL 0 GOTO end
REM
REM Install the OCS Service
REM
:install
ECHO OCS Directory Not Found, Installing OCS Service...
\\\\server\netlogon\OcsAgentSetup.exe /np /install IF ERRORLEVEL 0 GOTO :begin
:end
ECHO All Done!
pause
Mitglied: 60730
60730 Jan 20, 2009 at 15:11:42 (UTC)
Goto Top
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ß
Mitglied: 17867
17867 Jan 20, 2009 at 15:14:05 (UTC)
Goto Top
C:\>"C:\Dokumente und Einstellungen\x106883\Desktop\Neu.bat"

C:\>if exist "C:\Program Files (x86)\OCS Inventory Agent\service.ini" set "Pfad=
C:\Program Files (x86)\OCS Inventory Agent"
Syntaxfehler.

C:\>if exist "Programfiles\OCS Inventory Agent"

C:\>


BAT-DATEI:
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
Mitglied: 17867
17867 Jan 20, 2009 at 15:18:44 (UTC)
Goto Top
hey ich bin sehr für deine hilfe dankbar, nur hat es leider nicht geklappt das skript. bei dem hier wird die datei ersetzt und geprüft ob das OCS schon drauf ist...wenn nicht wird es installiert.

dein skript werde ich noch zum laufen bekommen..da bin ich hartnäckigface-smile
Mitglied: 60730
60730 Jan 20, 2009 at 15:22:30 (UTC)
Goto Top
passt schon...

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
Mitglied: 17867
17867 Jan 20, 2009 at 15:42:33 (UTC)
Goto Top
ahaaaaaaa interessant es funktioniertface-smile))) 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???

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]


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!)
Mitglied: 60730
60730 Jan 20, 2009 at 16:31:59 (UTC)
Goto Top
Zitat von @17867:
ahaaaaaaa interessant es funktioniertface-smile))) 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???

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!)

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 face-wink
Mitglied: 17867
17867 Jan 21, 2009 at 14:23:54 (UTC)
Goto Top
trotzdem danke für deine grosse hilfe. mein kollege der die batch skripte schreibt ist leider krank, ich kenne mich wenig aus damit deswegen so viele fragen.

naja das batch skript funktioniert einwandfrei im admin account lokal face-smile

Meine nächste Hürde wird es sein das Skript auf einem entfernten Server (Netlogon-Server abzulegen) und das es von dort aus ausgeführt wird wenn sich ein User ohne Adminrechte anmeldet.

Ich muss wohl ein weiteres batch skript schreiben (runas etc.) um meine eigentliche batch datei als admin vom Netlogon Server auszuführen ohne eine interaktion des users, denn die service.ini lässt sich nur vom admin editieren bzw. ersetzen.

recherchiere nun nach computerstartupskripten sowie psexec...danke für den tipp. hoffe ich bekomm das hinface-smile